Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有多个内容的WPF模板绑定_C#_Wpf_Xaml - Fatal编程技术网

C# 具有多个内容的WPF模板绑定

C# 具有多个内容的WPF模板绑定,c#,wpf,xaml,C#,Wpf,Xaml,所以,我有这个窗户。在上面,我创建了一个文本块和文本框成对的列表。当你点击其中一个时,他们会在相应的文本框中输入一个数字,并在后台设置一些值。现在一切都很好 我有下面的XAML来创建一个自定义复选框(因为它具有我想要用于此的行为)。我的问题是我想将不同的内容绑定到TextBlock和TextBox中。对于TextBlock,我绑定到Content属性,但找不到合适的选项来满足第二个绑定。我考虑过将它放在标记中,但这感觉不太对,而且在任何情况下,我已经在那里绑定了一个我需要的索引值 <Sty

所以,我有这个窗户。在上面,我创建了一个文本块和文本框成对的列表。当你点击其中一个时,他们会在相应的文本框中输入一个数字,并在后台设置一些值。现在一切都很好

我有下面的XAML来创建一个自定义复选框(因为它具有我想要用于此的行为)。我的问题是我想将不同的内容绑定到TextBlock和TextBox中。对于TextBlock,我绑定到Content属性,但找不到合适的选项来满足第二个绑定。我考虑过将它放在标记中,但这感觉不太对,而且在任何情况下,我已经在那里绑定了一个我需要的索引值

<Style x:Key="CustomCHK" TargetType="{x:Type CheckBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type CheckBox}">
                    <DockPanel LastChildFill="True">
                        <TextBox DockPanel.Dock="Right" Width="50" Height="30" />
                        <TextBlock Text="{TemplateBinding Content}" TextWrapping="Wrap" />
                    </DockPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

感觉应该有一个简单的解决方案,但我只是想决定什么是最好的。我是否创建了一个自定义的checkbox类并只添加了几个属性


和往常一样,我非常感谢您能为我提供的任何指导。

不幸的是,没有直接的方法可以做到这一点。我只能看到两种(有点缺陷的)解决方法:

  • 子类
    复选框
    以满足您的需要,并添加所需的其他内容属性。其优点是,这将完全启用IDE的编程帮助来设置内容属性,并且这些属性将是类型安全的。缺点是,您需要添加C#代码的唯一目的是声明额外的内容属性(即,不添加任何“行为逻辑”),这似乎与仅用于表示的“干净”XAML方法相冲突
  • 您可以尝试将数组传递给,然后在控件模板中放置多个实例,每个实例都绑定到数组中的另一项,虽然您的代码可能会变得有点冗长,但是XAML中的数组必须使用显式编写

要绑定到textbox的第二个值是什么?这是用户输入吗?。但假设文本框是用户输入,我认为对于您的情况,为复选框添加自定义控件并向其添加新属性更合适。@Sypher\u 04您拥有的更像是
UserControl
或自定义控件,您可以在其中创建自己的依赖属性。或者,如果您仍然想使用
复选框
,您可以按照我的想法创建附加属性。基本上我有一个后台对象,它收集所有用户输入。最初,所有的文本框都是空白的。绑定到空字符串值。一旦接收到输入,如果用户返回此屏幕,他们的输入将通过后台对象上的绑定重新加载到屏幕上。@Sypher\u 04是否有任何特殊原因使您模板化
复选框
控件?这就是您想要的行为(可以在两种状态之间切换的控件)?或者您只是因为它有一个通用的
内容
属性才使用它?