Hoe bind controle eigenschap aan een andere venstereigenschap?

Ik heb een venster waarin een rechthoek is. Ik wil dat de vulling een verloopstop is voor een andere rechthoekvulling, maar in een ander venster. Het "bron" -venster is gedefinieerd als:


Er is een rechthoek

    
        
            
                
                    ...
                
            
        
    

en een woning:

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

Nu, in het doelvenster, definieer ik een rechthoek:

    
        
            
                
                
            
        
    

waar BrushToColorConverter Brush in Color converteert. Dit werkt niet en ik weet niet waarom, het lijkt erop dat ik een probleem heb met het aanspreken van dat "bron" -venster. Ik bouw het in de constructor van het doelvenster:

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

Ik verstop me alleen en laat het niet zien, ik sluit het zeker niet. Hoe het goed te binden?

1
Gebruik de eigenschap bindin to OwnerWindow ... stackoverflow.com/questions/7825379/…
toegevoegd de auteur WPF-it, de bron

1 antwoord

U moet de eigenschap SelectedBrush op uw MainWindow laten weergeven en u hoeft alleen maar aan de kleur van deze Brush te binden met behulp van RelativeSource. Dus dit zal voor u doen -


   
     
        
        
     
   

Maar zorg ervoor dat tijdens het maken van het venster, de eigenaar Main Window wordt -

public MainWindow()
{
   InitializeComponent();
   colorWindow = new ColorSelectorWindow();
   colorWindow.Name = "colorWindowSelector";
   colorWindow.Owner = this;
   colorWindow.Hide();
}
1
toegevoegd
Als u een eigenschap in hetzelfde venster hebt waar uw rechthoek is, vervangt u eenvoudigweg het inbindpad om SelectedBrush in plaats van Owner te zeggen.SelectedBrush .. Geen behoefte om eigenaar in te stellen dan .. :)
toegevoegd de auteur Rohit Vats, de bron
Ok, je wilt dat je kind-venster een eigenschap doorgeeft aan je hoofdvenster. In het geval dat u MVVM implementeert, ligt uw antwoord hier - wpf en mvvm pattern "> stackoverflow.com/questions/7507527/…
toegevoegd de auteur Rohit Vats, de bron
Als u MVVM niet volgt, raad ik u aan om die eigenschap in de basisklasse te plaatsen en beide vensters van die basisklasse over te nemen, zodat beide toegang hebben tot die eigenschap. Laat het me weten in geval f problemen.
toegevoegd de auteur Rohit Vats, de bron
Ik moet die eigenschap in het andere venster hebben
toegevoegd de auteur deha, de bron
Ja, maar SelectedBrush bevindt zich in het venster Eigendom, niet in de eigenaar ervan. Van doel (MainWindow) moet ik ColorSelectorWindow aanspreken.SelectedBrush. Uw oplossing lijkt op zoek te zijn naar MainWindow.SelectedBrush en te binden aan ColorSelectorWindow-rechthoekvulling, wat niet is wat ik zoek ... Of ik heb het verkeerd begrepen
toegevoegd de auteur deha, de bron