[英]C# and WPF, when using mvvm style, and button action as command with commandparameter, how to ALWAYS create a new object in commandparameter?
這是MainWindow
的xaml wpf:
<Button
x:Name="Add_Button"
Content="Add Item"
VerticalAlignment="Center"
Style="{StaticResource ResourceKey=ActionButtonStyle}"
Command="{Binding openAddDialogCommand}">
<Button.CommandParameter>
<local:MyDialog />
</Button.CommandParameter>
</Button>
在這里, MainWindow
已經有一個帶有ViewModel的上下文。 openAddDialogCommand
是打開它的命令。 參數本身將作為IDialogService
而不是對話框本身傳遞。
現在的問題是, MyDialog
是一個窗口,當我關閉它時,除非它是一個新實例,否則無法重新打開該窗口。 如何始終將新實例作為參數返回? 我嘗試在MainWindow
類中使用一個變量,該變量始終在其getter中生成一個新對象,然后使用對按鈕的綁定,除非我提高了更改的屬性(這太復雜了,並且我不想),否則它根本不起作用向MainWindow
類添加更多代碼。 有沒有簡單的方法可以做到這一點?
您可以處理click事件並以編程方式創建MyDialog
的新實例,而不使用命令參數:
private void Button_Click(object sender, RoutedEventArgs e)
{
var viewModel = DataContext as viewModel:
viewModel.openAddDialogCommand.Execute(new MyDialog());
}
這只是從完全相同的視圖調用相同的命令,但是使用諸如C#的編程語言而不是使用諸如XAML的標記語言來執行此操作更加靈活。
MVVM並不是要從視圖中消除代碼,而主要是要分離關注點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.