Я загружаю данные из файла и хочу назначить их представлению. Я использую тип привязки StaticResource в XAML, потому что в нем легче ориентироваться при определении представления.
Как переназначить значение StaticResource, определенного в XAML, только что загруженным данным?
XAML:
<Window.Resources>
<local:Container x:Key="Container"/>
</Window.Resources>
<Grid>
<ComboBox Name="Combo"
ItemsSource="{Binding Source={StaticResource Container}}"
HorizontalAlignment="Left" VerticalAlignment="Top"/>
</Grid>
Кодовый код:
public class Container : ObservableCollection<string>
{
public Container()
{
Add("AAA");
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Container resource = FindResource("Container") as Container;
Container container2 = new Container() { "BBB" };
resource = container2;
}
}
Здесь предполагается, что в Combobox есть «AAA» и «BBB», но код позади не меняет его. Я не могу установить его в DynamicResource, и использование интерфейса INotifyPropertyChanged не помогает.
Конечно, выполнение Combo.ItemsSource = container2;
работает, но затем вынуждает меня установить все привязки элементов View в выделенном фрагменте кода. И как бы я тогда установил привязки RelativeSource для всех дочерних элементов, которым нужны данные из верхних уровней иерархии классов, т.е. теперь я могу сделать {Binding Source={StaticResource Container}, Path=TopClass.AnotherCollection.Value}
внутри дочернего элемента.