不知道这是否是“最好”的方法。我正在学习MVVM的概念,很抱歉。
我有4个按钮,我想在一个矩形内显示一个VisualBrush。这是我的密码:
查看:
<Controls:MetroWindow.RightWindowCommands>
<Controls:WindowCommands Name="WindowCommand" ItemsSource="{Binding Model.WindowCommandItems}">
<Controls:WindowCommands.ItemTemplate>
<DataTemplate DataType="{x:Type ModelType:MainModel}">
<Button Command="{Binding Command}">
<StackPanel Orientation="Horizontal">
<Rectangle Width="20"
Height="20">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{Binding Icon}" />
</Rectangle.OpacityMask>
</Rectangle>
<TextBlock Margin="4 0 0 0"
VerticalAlignment="Center"
Text="{Binding Header}" />
</StackPanel>
</Button>
</DataTemplate>
</Controls:WindowCommands.ItemTemplate>
</Controls:WindowCommands>
</Controls:MetroWindow.RightWindowCommands>ViewModel:
private void CreateWindowCommands() {
var myResourceDictionary = new ResourceDictionary();
myResourceDictionary.Source =
new Uri("/BlackBoxBot;component/Resources/Icons.xaml",
UriKind.RelativeOrAbsolute);
Model.WindowCommandItems = new ObservableCollection<Models.MainModel.WindowCommandModel> {
new Models.MainModel.WindowCommandModel {
Header = "Viewer",
Icon = new VisualBrush() { Visual = (Visual)myResourceDictionary["users"] as Canvas}
},
new Models.MainModel.WindowCommandModel {
Header = "Home",
Icon = new VisualBrush() { Visual = (Visual)myResourceDictionary["appbar_home"] as Canvas }
},
new Models.MainModel.WindowCommandModel {
Header = "Dashboard",
Icon = new VisualBrush() { Visual = (Visual)myResourceDictionary["theater"] as Canvas }
},
new Models.MainModel.WindowCommandModel {
Header = "Einstellungen",
Icon = new VisualBrush() { Visual = (Visual)myResourceDictionary["settings"] as Canvas }
}
};
......型号:
[PropertyChanged.ImplementPropertyChanged]
public class WindowCommandModel {
public string Header { get; set; }
public ICommand Command { get; set; } = new RoutedCommand();
public VisualBrush Icon { get; set; }
}我的结果是:
为什么我的图标没有显示?
发布于 2017-04-04 15:47:30
<VisualBrush Stretch="Fill" Visual="{Binding Icon}" />VisualBrush.Visual期望对象的类型为Visual
您正在绑定到一个VisualBrush。
Icon = new VisualBrush() { Visual = (Visual)myResourceDictionary["users"] as Canvas}试一试:
Icon = myResourceDictionary["users"] as Canvashttps://stackoverflow.com/questions/43211137
复制相似问题