2012-05-08 63 views
1

我有一個問題,我猜這是我在WPF中缺少的一些基本知識。WPF共享屬性

我默認寬度(generix.XML)設置爲文本框與一些微量寬度爲文本框

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="SnapsToDevicePixels" Value="True"/> 
    <Setter Property="OverridesDefaultStyle" Value="True"/> 
    <Setter Property="Foreground" Value="Black"/> 
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
    <Setter Property="MinWidth" Value="50"/> 
</Style> 

我有保持文本框2個輸精管控件。這兩個文本框具有相同的寬度.. 我將某些屬性添加到將聲明文本框寬度的控件之一,並將以文本框將「查找」該屬性的方式覆蓋其寬度聲明。

這裏是一些圖介紹我的要求:

controls

更新:

我只是弄清楚,我沒有描述的一個多進口的東西。 我有一些使用文本框的DataTemplate。正如我上面寫的,我有兩個控件具有相同的DataType(MyData)我也創建了DateTemplate來顯示MyData。我希望每個控件都會顯示不同寬度的文本框(來自數據表)。

更新2: 這裏是一些更多的代碼

1-的DataTemplate中我的數據,其中使用文本框

<DataTemplate DataType="{x:Type ml:MyData}"> 
    <Border BorderBrush="Transparent" ClipToBounds="True" Style="{StaticResource errorBorder}"> 
     <TextBox Text="{Binding MyText}"/> 
    </Border> 
</DataTemplate> 

2-我採用使用文本框的DataTemplate中的方式。

<ContentPresenter Grid.Column="1" Margin="10,1,10,1" HorizontalAlignment="Left" Content="{Binding}" /> 

這contentPresentor是被顯示在兩個不同勢的控制。正如我之前寫的,我希望每個控件都能顯示不同寬度的文本框。

這看起來像我想念一些基本的knloage(附屬pro?h?邏輯/視覺樹?)。

感謝,萊昂

+0

爲什麼不設置文本框的寬度屬性? –

+0

謝謝Amittai.Phanks,Leon – leonnoah

+0

您可以添加簡化版本的XAML,它顯示了DataTemplate中TextBox的使用方法,以及如何在控件中使用DataTemplate –

回答

0

好問題,在DataTemplate中的主要思想是,你必須對某些數據的特定圖形表示。你可以在MSDN中閱讀更多關於它的信息。
如果您想自定義您的文本框,並在不同的用戶控件中使用不同的屬性,則可能需要使用ControlTemplate。 問題是,如果你想控制特定控件的屬性(在這種情況下TextBox帶有一些邊框),你應該使用ControlTemplate。 你的XAML應該是這個樣子:

<ControlTemplate TargetType="{x:Type TextBox}"> 
     <--! define the ControlTemplate here with some Width property--> 
<ControlTemplate> 

和使用將具有文本框(因爲你定義它,帶邊框)控制:

<TextBox Grid.Column="1" Margin="10,1,10,1" HorizontalAlignment="Left" Content="{Binding}" Width="50"/>