Басқа терезе сипатына байланысу сипатын қалай басқарады?

Менде төртбұрыш бар терезе бар. Мен оның толтырылуын басқа тіктөртбұрышты толтыруға арналған градиентстоп болғым келеді, бірақ әр түрлі терезеде. «Көз» терезесі келесідей анықталады:


Төртбұрыш бар

    
        
            
                
                    ...
                
            
        
    

және мүлік:

public partial class ColorSelectorWindow : Window
{
    public Brush SelectedBrush
    {
        get
        {
            return ColorPicker.Fill;
        }
    }
}

Енді мақсатты терезеде тіктөртбұрышты анықтай аламын:

    
        
            
                
                
            
        
    

BrushToColorConverter щетканы Түске түрлендіреді. Бұл жұмыс істемейді, мен неге екенін білмеймін, «source» терезесін ақаулықпен шешуіме ұқсайды деп ойлаймын. Мақсатты терезе конструкторында жасаймын:

        public MainWindow()
        {
            colorWindow = new ColorSelectorWindow();
            colorWindow.Name = "colorWindowSelector";
            colorWindow.Hide();
            InitializeComponent();
        }

Мен тек жасырынып, оны көрсетіп жатырмын, сенімді емес. Оны қалай дұрыс байланыстыруға болады?

1
OwnerWindow сипатын bindin пайдаланыңыз ... stackoverflow.com/questions/7825379/…
қосылды автор WPF-it, көзі

1 жауаптар

Сіз өзіңіздің MainWindow-те SelectedBrush-ді мүлікте ұстауыңыз керек және RelativeSource-ды пайдалана отырып, осы щетканың түсіне байлауыңыз керек. Сонымен, бұл сіз үшін жасайды -


   
     
        
        
     
   

Бірақ, терезені жасағанда, оның иесін MainWindow деп орнатыңыз -

public MainWindow()
{
   InitializeComponent();
   colorWindow = new ColorSelectorWindow();
   colorWindow.Name = "colorWindowSelector";
   colorWindow.Owner = this;
   colorWindow.Hide();
}
1
қосылды
Егер сізде бірдей терезеде қасиеті бар болса, онда сіздің тіктөртбұрышыңыз жай ғана Owner.SelectedBrush орнына SelectedBrush деп айту үшін Binding жолын ауыстырады. Иелерді орнату қажет емес :)
қосылды автор Rohit Vats, көзі
Жақсы, сіз өзіңіздің терезеңіздің негізгі терезеге меншікке өтуін қаласаңыз болады. Егер сіз MVVM-ті іске асырсаңыз, сіздің жауапыңыз осында жатыр - wpf және mvvm үлгісінің көмегімен еншілес терезеден ата-аналық терезеге өтетін мән «> stackoverflow.com/questions/7507527/…
қосылды автор Rohit Vats, көзі
Әйтпесе, MVVM-ті емес, егер сіз бұл сипатты базалық класқа орналастырғыңыз келсе және екеуі де осы сипатқа қол жеткізе алатындай етіп, осы негізгі класстан екі терезені мұра етіңіз. Кез-келген мәселе туралы маған хабарлаңыз.
қосылды автор Rohit Vats, көзі
Басқа терезеде бұл мүлікті алуым керек
қосылды автор deha, көзі
иә, бірақ SelectedBrush иеленуші терезеде, иеленушіде емес. Мақсатта (MainWindow) Мен ColorSelectorWindow.SelectedBrush-ға жүгінуім керек. Сіздің шешіміңіз MainWindow.SelectedBrush іздейді және оны ColorSelectorWindow тіктөртбұрыш толтырғысы келетін, менің іздегенім емес деп ойлайды ... Немесе мен қате түсіндім
қосылды автор deha, көзі