0
これが「最良の」方法であるかどうかは分かりません。 私はMVVMの概念を学んでいます。申し訳ありません。MVVM VisualBrush Binding
私は4つのボタンがあり、私はRectangle内に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; }
}
マイ結果:
は、ここに私のコードです
なぜアイコンが表示されないのですか?