【发布时间】:2018-12-09 11:57:25
【问题描述】:
我有一个自定义对象的 Observable 集合和一个公共字典变量。
我希望“BrandName”属性充当“Brands”字典的键并将颜色绑定到按钮。我该怎么做呢?字典变量在类之外。
C#代码:
private ObservableCollection<BusService> BusServicesGUI;
public Dictionary<String, Brush> Brands;
public MainWindow(Dictionary<String, BusService> busServices)
{
InitializeComponent();
BusServicesGUI = new ObservableCollection<BusService>(BusServices.Values);
lstMachineFunctions.ItemsSource = BusServicesGUI;
lstMachineFunctions.Items.Refresh();
}
C# 类:
public class BusService
{
public string ServiceNumber { get; set; }
public string BrandName { get; set; }
public List<Location> Locations { get; set; }
public BusService(string brandName, string serviceNumber)
{
BrandName = brandName;
ServiceNumber = serviceNumber;
Locations = new List<Location>();
}
}
XAML 代码:
<StackPanel x:Name="ServiceStack">
<ItemsControl x:Name="lstMachineFunctions">
<ItemsControl.ItemTemplate >
<DataTemplate>
<Grid HorizontalAlignment="Stretch">
<usercontrols:BusServiceCard/>
<Button Tag="{Binding ServiceNumber}" Background="{Binding Brands[BrandName]}" Height="50" Click="ButtonCl"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
正如您从 XAML 中看到的那样,我目前的尝试一直在尝试 Background="{Binding Brands[BrandName]}" 但是这没有奏效,非常感谢任何帮助。
【问题讨论】:
-
它是一个复杂的画笔还是只是一个
SolidColorBrush?是否可以在BusService上添加Color? -
它只是一个 SolidColourBrush,我不想向 BusService 类添加颜色属性,但是因为我希望能够更改品牌字典并更新所有巴士服务对象。
-
制作一个环绕 BusService 的视图模型(例如 BusServiceViewModel),让它提供颜色
标签: c# wpf xaml dictionary binding