我制作自己的控件。 在里面我想定义数据模板以在自定义消息框中使用它。 在代码中我打开这个对话框,但不能在其中设置启动值复选框。
请帮帮我 - 如何通过名为VoiceTemplate的DataTemplate将cbVoiceAttChecked变量正确绑定到CustomMessageBox
XAML:
<UserControl x:Class="myProj.RDPControl"
...
>
<UserControl.Resources>
<DataTemplate x:Key="VoiceTemplate" >
<StackPanel Margin="32,0,0,0">
<CheckBox x:Name="cbVoiceAtt" Content="..." IsChecked="{Binding cbVoiceAttChecked}"/>
... /*Other checkboxes*/
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
... Here is main control - works perfectly
</Grid>
代码
public partial class RDPControl : UserControl
{
public RDPControl()
{
InitializeComponent();
//this.DataContext = this;
}
public bool cbVoiceAttChecked { get; set; }
....
private void VoiceButton_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
cbVoiceAttChecked = true; // This value binding to temlate!!!
CustomMessageBox messageBox = new CustomMessageBox()
{
Caption = "...",
Message = "...",
ContentTemplate = (DataTemplate)(this.Resources["VoiceTemplate"]), // Use template from xaml
DataContext = this, // I want to use cbVoiceAttChecked variable to bind to dialog
LeftButtonContent = "yes",
RightButtonContent = "no"
};
...
messageBox.Show();
}
答案 0 :(得分:0)
您需要将cbVoiceAttChecked
属性更改为DependencyProperty
,或在INotifyPropertyChanged
课程中实施RDPControl
界面。
您可以在MSDN上的INotifyPropertyChanged
Interface以及MSDN上DependencyProperty
Class和Dependency Properties Overview页面中的INotifyPropertyChanged
找到有关DependencyProperty
界面的更多信息。
当然,这完全取决于您在ContentTemplate
课程中使用RDPControl
对象所做的事情。由于您没有表明这一点,我无法确认进行上述更改将解决您的问题。