我正在做WPF UserControl
。WPF UserControls:有一個只能在UserControl內部使用的命令
在這個UserControl的內部,我有幾個Button
可以在某些條件下使用,所以綁定到一個命令是完美的。
這些按鈕所調用的命令不應該在UserControl外部可用。
如果我讓我的命令爲private,則UserControl
的XAML表示他想要公共成員。
那麼,如何讓一個UserControl在內部有幾個命令,但在UserControl之外不可用?
例子:
<Wizard CanGoPrevious="{Binding SomeViewModelProperty}">
<WizardPage>
<TextBlock>Page one</TextBlock>
</WizardPage>
</Wizard>
嚮導的XAML:
<DockPanel DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type wizard:Wizard}}}" LastChildFill="True">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" HorizontalAlignment="Right">
<Button Content="{Binding PreviousButtonText}" Command="{Binding GoToPreviousPageCommand}"/>
</StackPanel>
<ContentControl ></ContentControl>
</DockPanel>
嚮導的代碼背後:
//Protected doesn't work. Also, this command should not be available outside of the Wizard `UserControl`
protected DelegateCommand GoToPreviousPageCommand { get; set; }
這是在構造函數中這樣分配
GoToPreviousPageCommand = new DelegateCommand(GoToPreviousPage, CanGoToPreviousPage);
private void GoToPreviousPage()
{
//[...]
}
private bool CanGoToNextPage()
{
//Some usage of the Wizard's DP:
return CanGoPrevious //&& some other stuff
}
不要打擾。這是一個用戶控件 - 在代碼隱藏中包含關於UI的邏輯是完全正確的。 – Will
@Will好吧,但是沒有找到提供UserControl公共訪問命令的命令,這些命令只能在內部使用。 – J4N