Я хотел бы привязать элемент словаря, используя переменную в качестве ключа, например:
PanelNames.cs
public static class PanelNames
{
public static string Panel1 = "Panel1";
public static string Panel2 = "Panel2";
}
MainWindowVM.cs
IDictionary<string, object> Panels { get; }
MainWindow.xaml
<TextBlock Content="{Binding Panels[Panel1]}" /> <-- this works fine, because Panel1 is simply string
<TextBlock Content="{Binding Panels[PanelNames.Panel1]}" /> <-- this doesn't work, because there is no key with such name, but I want to keep names outside XAML file and use PanelNames static class.
Возможно ли получить доступ к элементу словаря, используя переменную в качестве ключа в XAML? Я видел этот пост, но он не соответствует моим требованиям.
Вместо hardcoding строки в XAML вы должны привязать это к другому свойству.
Посмотреть,
<TextBlock Content="{Binding PanelValue}" />
ViewModel,
IDictionary<string, object> Panels { get; }
private string _panelValue;
public string PanelValue
{
get { return Panels[panelValue]; }
set
{
// Make sure Panels has this key,
_panelValue = value;
OnPropertyChanged("PanelValue");
}
}
Таким образом, в вашем коде вы можете установить PanelValue на ключ, значение которого вы хотите отобразить в TextBlock,