2017-02-09 30 views
2

所以我有這個目前:如果我有一個文本框是複選框的子項,是否可以鍵入破折號?

<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> 

我目前還不能輸入一個「 - 」在我TextBox,因爲它是我的CheckBoxCheckBox的孩子有內建的功能,其中,若所述+/=鍵或-/_鍵被按下時,它會檢查/取消選中我的CheckBox。我不想要這個功能,我希望用戶能夠實際輸入像「 - 」這樣的破折號,而不用取消選中/檢查我的複選框。有沒有簡單的方法來解決這個問題?

在此先感謝

回答

1

哇,失去理智了幾個小時之後我想通了,如何擺脫這個問題。

所有你所要做的就是設置IsThreeState = True;,因爲它們在 CheckBox.cs code here

0

一種方式做了檢查IsThreeState是創建一個自定義的複選框,並覆蓋的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> 
相關問題