C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#WPF、バインディング先のフィールド名を知りたい

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■86866 / inTopicNo.1)  C#WPF、バインディング先のフィールド名を知りたい
  
□投稿者/ かい (22回)-(2018/03/29(Thu) 23:42:29)

分類:[.NET 全般] 

2018/03/29(Thu) 23:42:45 編集(投稿者)
お世話になっています。
環境はVisualStudio2017 C# WPFです。

掲題についてです。

-目的

画面毎に共通化出来るデザインが存在する為、
それらをApplication.Resourcesに定義したのですが、
対象の共通化したデザインが同じ画面に複数存在することがありました。
その為、Binding対象のフィールドを特定したいです。

例を示します。以下のXAMLが存在します。

<TextBox 
    x:Name="txtMaxRowCount" 
    Text="{Binding MaxRowCount, UpdateSourceTrigger=PropertyChanged}"
/>

このMaxRowCountという情報を、App.xamlでの共通化したデザイン上で、
FindAncestorを使用し取得したいと思っています。

イメージを以下に示します。
<Style x:Key="xxx" TargetType="{x:Type TextBox}">
    <Setter Property="Template">
        <Setter.Value>
〜省略〜
<MultiBinding Converter="{StaticResource Converter}">
    <Binding RelativeSource="{RelativeSource FindAncestor, 
                            AncestorType={x:Type TextBox}}"
                        Path="Text.BindingField"/> ←こんな感じで結びついているField名を取得したい。
〜省略〜
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>


何かご存じでしたらご教授下さい。以上です。

引用返信 編集キー/
■86879 / inTopicNo.2)  Re[1]: C#WPF、バインディング先のフィールド名を知りたい
□投稿者/ Hongliang (624回)-(2018/03/30(Fri) 15:08:12)
まあ無理でしょうね。
NameプロパティでもPathで参照すればどうです?
// 基本的にはx:Nameに設定したのがNameプロパティにも適用されます。
引用返信 編集キー/
■86880 / inTopicNo.3)  Re[2]: C#WPF、バインディング先のフィールド名を知りたい
□投稿者/ かい (23回)-(2018/03/31(Sat) 12:04:39)
返信ありがとうございます。
やはりNameやTagに識別用の情報を残す方法しか無さそうですね。

私はコントロールの名前に限りハンガリアンで記述しているので、
ReadOnlyDictionaryでコントロール名とフィールド名を紐づけることにします。

ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ