2012-05-08 8 views
1

私はWPFで欠落している基本的な知識があると思います。 WPF共有プロパティ

は、私は、テキストボックスを保持する2つの精コントロールを持っているテキストボックス

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

ためのいくつかのミニム幅でテキストボックスにデフォルトの幅(generix.XML)を設定します。両方のテキストボックスの幅が同じです。 コントロールのいずれかにプロパティを追加して、テキストボックスの幅を宣言し、幅の宣言をオーバーライドします。

controls

更新:

私はちょうど私が1つのより輸入の事を説明していなかったことを把握ここ

は、いくつかの図面が私の要件を記述しています。 私は、テキストボックスを使用するいくつかのDataTemplateを持っています。私が上記のように、私はMyDataを表示するためにDateTemplateを作成したのと同じDataType(MyData)を持つ2つのコントロールを持っています。私は、各コントロールは、幅の異なるテキストボックス(データ項目から)を表示することを望みます。

アップデート2: ここでテキストボックス

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

2-私はテキストボックスを使用するDataTemplateを使用する方法を使用して自分のデータにいくつかのより多くのコード

1-するDataTemplateです。

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

このコンテンツプレゼンターは2つの異なるコントロールで表示されています。前に書いたように、各コントロールが異なる幅でテキストボックスを表示するようにしたいと考えています。

私はいくつかの基本的なknloage(添付されているプロタジー?ロジック/ビジュアルツリー?

おかげで、レオン

+0

なぜテキストボックスのWidthプロパティを設定していませんか? –

+0

ありがとうございますAmittai.Please私の質問で私の更新をご覧ください。ありがとうございます、Leon – leonnoah

+0

DataTemplateでのTextBoxの使い方とコントロールでのDataTemplateの使い方を示すXAMLの簡略化されたバージョンを追加できますか? –

答えて

0

いい質問は、DataTemplateの中に主なアイデアは、あなたには、いくつかのデータのための特定のグラフィカルな表現を持っているということです。詳細はMSDNでご覧になれます。
TextBoxをカスタマイズし、異なるUserControl内で異なるプロパティを使用する場合は、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"/> 
関連する問題