wp8通过DataTemplate将CheckBox绑定到CustomMessageBox

时间:2015-03-17 04:16:35

标签: wpf xaml windows-phone-8 datatemplate

我制作自己的控件。 在里面我想定义数据模板以在自定义消息框中使用它。 在代码中我打开这个对话框,但不能在其中设置启动值复选框。

请帮帮我 - 如何通过名为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(); 
    }

1 个答案:

答案 0 :(得分:0)

您需要将cbVoiceAttChecked属性更改为DependencyProperty,或在INotifyPropertyChanged课程中实施RDPControl界面。

您可以在MSDN上的INotifyPropertyChanged Interface以及MSDN上DependencyProperty ClassDependency Properties Overview页面中的INotifyPropertyChanged找到有关DependencyProperty界面的更多信息。

当然,这完全取决于您在ContentTemplate课程中使用RDPControl对象所做的事情。由于您没有表明这一点,我无法确认进行上述更改将解决您的问题。