我在MVVM和WPF是新的......在summerized形式 - 如何控制使用WPF和MVVM控制知名度diplay面板與零代碼點擊後面使用MVVM和WPF
問題。它也應該與零代碼背後。
實際情景-I有多個用戶控制面板...說UCPanel1,UCPanel2,UCPnale3 ...直到6 - 我在一個單一的主用戶控制導入這些用戶控件...說UCMain ,其具有頂部按鈕的堆棧面板...就像菜單一樣。 - 現在需求非常簡單...在button1上單擊 - 我應該可以看到UCPanel1和其餘面板隱藏,Button2單擊 - 我應該能夠看到UCPanel2和其餘面板隱藏...等等 - This i使用後面的代碼成功地獲得成功。但要求是實現這樣一種方式,即在代碼背後應儘可能少的代碼。 那麼我的XAML和視圖模型如何?
我無法訪問UCPanel1的擴展對象視圖模型..
在XAML的mainPanel ...
<Button
Style="{StaticResource StackPanelButtonStyle}"
Command="{Binding openMessageCommand}" >
<!--Click="BtnMessege_OnClick" >-->
<TextBlock
Text="Messaging"
Style="{StaticResource StackPanelButtonTextStyle}">
</TextBlock>
</Button>
<Button
Style="{StaticResource StackPanelButtonStyle}"
Command="{Binding openProductsCommand}">
<!--Click="BtnProducts_OnClick">-->
<TextBlock
Text="Products"
Style="{StaticResource StackPanelButtonTextStyle}" ></TextBlock>
</Button>
<local:StackPanelMessaging
Grid.Row="2"
Visibility="{Binding Panel1Visiblity}"></local:StackPanelMessaging>
<local:WrapPanelProducts
Grid.Row="2"
Visibility="{Binding Panel2Visiblity}" ></local:WrapPanelProducts>
在主視圖模型...
private Visibility _panel1Visiblity= Visibility.Visible;
private Visibility _panel2Visiblity= Visibility.Hidden;
public Visibility Panel1Visiblity
{
get { return _panel1Visiblity; }
set
{
if (_panel1Visiblity != value)
{
_panel1Visiblity = value;
OnPropertyChanged("Panel1Visiblity");
}
}
}
public Visibility Panel2Visiblity
{
get { return _panel2Visiblity; }
set
{
if (_panel2Visiblity != value)
{
_panel2Visiblity = value;
OnPropertyChanged("Panel2Visiblity");
}
}
}
private void OpenStackMessagePanel()
{
Panel1Visiblity = Visibility.Visible;
Panel2Visiblity = Visibility.Hidden;
}
private bool canExecuteMethod1()
{
return true;
}
private void OpenWrapProductsPanel()
{
Panel2Visiblity = Visibility.Visible;
Panel1Visiblity = Visibility.Hidden;
}
private bool canExecuteMethod2()
{
return true;
}
public ICommand openMessageCommand
{
get
{
if (_openMessageCommand == null)
{
_openMessageCommand = new DelegateCommand(OpenStackMessagePanel, canExecuteMethod1, true);
}
return _openMessageCommand;
}
}
public ICommand openProductsCommand
{
get
{
if (_openProductsCommand == null)
{
_openProductsCommand = new DelegateCommand(OpenWrapProductsPanel, canExecuteMethod2, true);
}
return _openProductsCommand;
}
}
而且我很感慨寫這麼多的代碼真的值得嗎?或者我應該優先考慮代碼後面只有10行....
這是在一個視圖模型使用任何命令和可視性性能正常完成,或者如果這純粹是UI的觸發器添加到該按鈕來運行你的動畫面板可見屬性,故事板。 – kidshaw
感謝您的回覆。是的,我做了同樣的事情,但不知道我錯在哪裏,面板在按鈕點擊時仍然沒有改變。請參閱編輯後的問題以獲取更多詳細信息...... – Lina
不知道你會怎麼知道 - 你的面板沒有任何內容。首先添加斷點並證明您的視圖模型。 – kidshaw