Denetim özelliğini başka bir pencere özelliğine nasıl bağlarsınız?

Dikdörtgenli bir pencerem var. Dolgusunun başka bir dikdörtgen dolgusu için, ama farklı pencerede bir degradeye olmasını istiyorum. "Kaynak" penceresi şu şekilde tanımlanır:


Bir dikdörtgen var

    
        
            
                
                    ...
                
            
        
    

ve bir özellik:

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

Şimdi, hedef pencerede bir dikdörtgen tanımlıyorum:

    
        
            
                
                
            
        
    

BrushToColorConverter Fırçayı Renk'e dönüştürür. Bu çalışmıyor ve neden bilmiyorum, "kaynak" penceresine hitap etmekte bir sorunum var gibi görünüyor. Hedef pencere yapıcısında yapıyorum:

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

Sadece saklıyorum ve gösteriyorum, kesin olarak kapanmıyor. Nasıl düzgün bir şekilde bağlanır?

1
OwnerWindow özelliğini ... stackoverflow.com/questions/7825379/…
katma yazar WPF-it, kaynak

1 cevap

MainWindow'ınızda SelectedBrush'a maruz kalmanız ve RelativeSource kullanarak bu Brush'ın rengine bağlamanız gerekir. Yani, bu senin için yapacak -


   
     
        
        
     
   

Ancak pencereyi oluştururken, sahibini MainWindow olarak ayarladığınızdan emin olun -

public MainWindow()
{
   InitializeComponent();
   colorWindow = new ColorSelectorWindow();
   colorWindow.Name = "colorWindowSelector";
   colorWindow.Owner = this;
   colorWindow.Hide();
}
1
katma
Dikdörtgenin olduğu aynı pencerede mülkünüz varsa, o zaman basitçe Owner.SelectedBrush yerine SelectedBrush söylemek için Binding yolunu değiştirin.
katma yazar Rohit Vats, kaynak
Tamam, çocuk pencerenizin mülkiyetini Ana Pencerenize iletmesini istiyorsunuz. MVVM'yi uygulamanız durumunda cevabınız burada - wpf ve mvvm desenini kullanarak ana pencereden geçen değeri "> stackoverflow.com/questions/7507527/…
katma yazar Rohit Vats, kaynak
Aksi takdirde MVVM'yi takip etmemeniz durumunda, bu özelliği temel sınıfta yerleştirmenizi ve her iki pencereyi de bu temel sınıftan devralırsınız. Böylece her ikisi de bu özelliğe erişebilir. Herhangi bir sorun olduğunda bana bildirin.
katma yazar Rohit Vats, kaynak
Diğer pencerede bu mülke sahip olmalıyım
katma yazar deha, kaynak
Evet, ancak SelectedBrush Sahip Olma penceresinde değil, Sahip olunan pencerede. Hedeften (MainWindow) ColorSelectorWindow.SelectedBrush adresine ihtiyacım var. Çözümünüz MainWindow.SelectedBrush'ı arıyor ve aradığım şey olmayan ColorSelectorWindow dikdörtgen dolgusuna bağlanıyormuş gibi görünüyor ... Ya da yanlış anlaşılan sth
katma yazar deha, kaynak