如果我的TextBox是复选框的子项,是否可以输入短划线?

时间:2017-02-09 20:05:15

标签: c# wpf xaml

所以我现在有这个:

<CheckBox x:Name="checkBox" HorizontalAlignment="Left" Margin="346,17,0,0" Grid.Row="1" VerticalAlignment="Top" Width="295" Height="189"   >
    <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="20" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
</CheckBox>

我目前无法输入&#34; - &#34;在我的TextBox中,因为它是我CheckBox的孩子而CheckBox有一些内置功能,如果 + / = 键或 - /按下_ 键,它会检查/取消选中我的CheckBox。我不想要这个功能,我希望用户能够实际输入短划线,如&#34; - &#34;没有它取消选中/选中我的复选框。有没有一种简单的方法来解决这个问题?

提前致谢

2 个答案:

答案 0 :(得分:2)

哇,经过几个小时的失去理智后,我想出了如何摆脱这个问题。

您需要做的就是设置IsThreeState = True;,因为他们正在检查 CheckBox.cs code here

中的IsThreeState

答案 1 :(得分:0)

一种方法是创建自定义复选框并覆盖 OnKeyDown

public class MCheckBox : CheckBox
{
    protected override void OnKeyDown(KeyEventArgs e)   { }
}

另一种方法是不将TextBox放在CheckBox中,而是放在它旁边,在DockPanel中进行一些修改:

<StackPanel>
    <CheckBox>
         <TextBox Text="this is a TextBox within a CheckBox"/>
    </CheckBox>
    <DockPanel LastChildFill="False">
        <CheckBox VerticalAlignment="Center"/>
        <TextBox Text="this is a TextBox beside a CheckBox" Margin="4,0,0,0"/>
    </DockPanel>
</StackPanel>