В WPF как вы получаете доступ к объекту, определенному в Window.xaml, из вложенного пользовательского элемента управления? - PullRequest
0 голосов
/ 05 августа 2009

У меня есть ситуация, когда мне нужно получить доступ к объекту, который был определен в одном пользовательском элементе управления из вложенного пользовательского элемента управления глубиной 2 уровня. Возьмем, к примеру, следующее:

public class MyClass
{
    public MyClass()
    {
        MyData = new MyDataProvider();
    }

    public MyDataProvider MyData;
    public string SelectedValue;
}

public class MyDataProvider
{
    public MyDataProvider()
    {
        MyList = new List<string>() { "Test1", "Test2", "Test3" };
    }
    public List<string> MyList;
}

Window.xaml

<Window.DataContext>
    <my:MyClass></my:MyClass>
</Window.DataContext>
<Grid>
    <my:UC1></my:UC1>
</Grid>

UC1.xaml

<Grid Height="Auto" Width="316">
    <my:UC2 Margin="0,0,41,52" DataContext="{Binding Path=MyData}"/>
    <TextBox Text="{Binding SelectedValue}" Margin="22,73,119,113" />
</Grid>

UC2.xaml

 <Grid>
    <StackPanel>
        <Label Content="My List"/>
        <ComboBox Name="comboBox1" ItemsSource="{Binding Path=MyList}" 
                                   SelectedItem="{Binding Path=SelectedValue}"/>
    </StackPanel>
</Grid>

Пожалуйста, не обращайте внимания на пропущенные события Изменения свойств и т. Д., Как это только для примера

Выше в основном показаны мои настройки. 2 вложенных пользовательских элемента управления, в которых нижний уровень, UC2, пытается установить для выбранного элемента комбинированного списка свойство SelectedValue объекта, определенного в Window xaml (MyClass). Проблема в том, что способ, которым я указал привязку SelectedItem, не работает. Мне нужно сказать это, чтобы найти дерево к окну. Это то, что я не знаю, как это сделать.

Пожалуйста, помогите.

Большое спасибо.

1 Ответ

2 голосов
/ 05 августа 2009
SelectedItem=”{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.SelectedValue}”
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...