我有一個WPF控制窗格與十六個相同的子控件包含一個組合框,需要綁定到父控制代碼後面的列表。我真的很努力讓這個列表綁定,直到我發現這個:Binding objects defined in code-behind。從繼承的數據上下文綁定到屬性
父控件上的設置DataContext="{Binding RelativeSource={RelativeSource Self}}"
允許我直接綁定子控件上的組合框。
問題是,現在我想創建一個數據模板來正確顯示列表項,但沒有任何我放在綁定或相對源顯示任何東西。
ControlPane.xaml
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="ControlPane"
x:Name="CtrlPaneWpf"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
>
ControlPane.xaml.cs
public class TwoStringClass
{
public string string1;
public string colorHex;
}
public ObservableCollection<TwoStringClass> TwoStringClass1
{
get
{
ObservableCollection<TwoStringClass> cmbclrs = new ObservableCollection<TwoStringClass>();
cmbclrs.Add(new TwoStringClass() { string1 = "This", colorHex = "#FF0000" });
cmbclrs.Add(new TwoStringClass() { string1 = "That", colorHex = "#FF352E2" });
cmbclrs.Add(new TwoStringClass() { string1 = "The Other", colorHex = "#FFF4F612" });
return cmbclrs;
}
}
ChildControl.xaml
<UserControl
x:Name="ChildControl"
>
<ComboBox x:Name="cmbFontColor" ItemsSource="{Binding TwoStringClass1}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding string1}" />
<Rectangle Fill="{Binding colorHex}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</UserControl>
我知道綁定正在工作,因爲我在Combobox中獲得了正確數量的(空白)項目,並且如果刪除ItemTemplate,可以看到類名稱。
我無法弄清楚爲什麼綁定到屬性名稱時不能正常工作,因爲當列表來自控件自己的代碼時。
必須有一些其他信息需要添加到TextBlock綁定中,但無論我嘗試使用什麼DataContext或RelativeSource,我總是會獲得空白項目。
這樣做。非常感謝你。現在關閉重命名我的所有屬性... –