所以,我有这个窗口。在它上面,我将成对创建一个TextBlocks和TextBoxes列表。当您单击其中任何一个时,它们会在相应的TextBox中放置一个数字,并在后台设置一些值。这一切都很好。
我有以下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>
感觉应该有一个简单的解决方案,但我只是想确定什么是最好的。我是否创建了一个自定义复选框类,只添加了几个属性?
与往常一样,我很欣赏你能为我提供的任何方向。
答案 0 :(得分:0)
不幸的是,没有直接的方法可以做到这一点。我只能看到两个(有点缺陷)的解决方法:
CheckBox
以满足您的需求,并添加您需要的其他内容属性。优点是,这将完全启用IDE的编程帮助来设置内容属性,这些属性将是类型安全的。缺点是您需要添加C#代码,其唯一目的是声明其他内容属性(即不添加任何&#34;行为逻辑&#34;),这似乎与&#34; clean&#冲突34; XAML - 仅用于演示方法。Content
property,然后在控件模板中放置几个ContentPresenter
实例,每个实例都绑定到数组中的另一个项目。 Binding property paths should support indexed access,虽然您的代码可能会变得有点冗长,因为XAML中的数组必须使用x:Array
markup extension明确写入。