XMLコンボボックスは互いにクロスバインディングします

レオン

親愛なる、

Autodesk DataStandardアドインのUIをカスタマイズして、XMLの世界に入ります。

A ComboBox1のは、アイテムが取り込まれるべきStandardTextInfoは、 XMLファイルにリストされています。各アイテムは、次のプロパティで構成されています。-
StandardTextNumber-
StandardTextDE
-StandardTextEN
-StandardTextFR

ここでStandardText.XMLのファイル:

<?xml version="1.0" encoding="utf-8"?>
<StandardTextData xmlns="">
  <StandardTextInfo StandardTextNumber="10" DE="KATZE" EN="CAT" FR="CHAT"></StandardTextInfo>
  <StandardTextInfo StandardTextNumber="20" DE="HUND" EN="DOG" FR="CHIEN"></StandardTextInfo>
  <StandardTextInfo StandardTextNumber="30" DE="PFERD" EN="HORSE" FR="CHEVAL"></StandardTextInfo>
</StandardTextData>

A Combobox2はアイテムが取り込まれるべきLanguageInfoは、 XMLファイルにリストされています。各アイテムは、LanguageNameプロパティ(DE = Deutsch、EN = English、FR = Francais)で構成されています。これがLanguage.XMLファイルです:

<?xml version="1.0" encoding="utf-8"?>
<LanguageData xmlns="">
  <LanguageInfo LanguageName="DE"></LanguageInfo>
  <LanguageInfo LanguageName="EN"></LanguageInfo>
  <LanguageInfo LanguageName="FR"></LanguageInfo>
</LanguageData>

使用目的は次のとおりです
。-ユーザーは、Combobox2から、アイテムがCombobox1に表示される言語を選択ます-Combobox1 DisplayMemberPathに
表示される値は、Combobox2で選択された値に対応するitemsプロパティにバインドされている必要がありますしたがって、アイテム名は、ユーザーが選択した言語で表示できます。-Beside、Combobox3のディスプレイプロパティStandardTextNumberで選択された項目のComboBox1のラベルではなくコンボボックス(Combobox3について説明します)を使用することで、ユーザーはアイテムプロパティStandardTextNumberを直接選択することもできます。
Combobox1に表示されているアイテムを逆に更新しますCombobox2で定義されている言語のままです)。

XAMLファイルへの3つのコンボボックスの定義は次のとおりです。

    <?xml version="1.0" encoding="utf-8"?>
    <WPF:MainWindow>
        x:Name="FileWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:WPF="clr-namespace:CreateObject.WPF;assembly=CreateObject"

    <Window.Resources>
        <XmlDataProvider>
            x:Key="Languages"
            Source="C:\Language.xml"
            XPath="/LanguageData"
        </XmlDataProvider>
        <XmlDataProvider
            x:Key="StandardTexts"
            Source="C:\StandardText.xml"
            XPath="/StandardTextData"
        </XmlDataProvider>
    </Window.Resources>

    <ComboBox>
        x:Name="Combobox1"
        IsEnabled="{Binding CreateMode}"
        ItemsSource="{Binding Source={StaticResource StandardTexts}, XPath="StandardTextInfo"}"
        SelectedItem="{Binding SelectedItem, ElementName=ComboBox3, Mode=OneWay}"
        SelectedValue="{Binding SelectedValue, ElementName=ComboBox2, Mode=OneWay}"
        SelectedValuePath="@StandardTextNumber"
        DisplayMemberPath="{Binding SelectedValue, ElementName=ComboBox3, Mode=OneWay}"
    </ComboBox>

    <ComboBox>
        x:Name="Combobox2"
        IsEnabled="{Binding CreateMode}"
        ItemsSource="{Binding Source={StaticResource Languages}, XPath="LanguageInfo"}"
        SelectedValue="{Binding Prop[LanguageName].value}"
        SelectedValuePath="@LanguageName"
        DisplayMemberPath="@LanguageName"
    </ComboBox>

    <ComboBox>
        x:Name="Combobox3"
        IsEnabled="{Binding CreateMode}"
        ItemsSource="{Binding Source={StaticResource StandardTexts}, XPath="StandardTextInfo"}"
        SelectedItem="{Binding SelectedItem, ElementName=ComboBox1, Mode=OneWay}"
        SelectedValue="{Binding SelectedValue, ElementName=ComboBox2, Mode=OneWay}"
        SelectedValuePath="{Binding SelectedValue, ElementName=ComboBox1, Mode=OneWay}"
        DisplayMemberPath="@StandardTextNumber"
    </ComboBox>

    </WPF:MainWindow>

私の質問:
1)Combobox1 SelectedValueDisplayMemberPathCombobox3 SelectedValueSelectedValuePath:おそらくロジックが恋しいです:目的のバインディングをどのように表現する必要がありますか?

2)XMLでは、バインドされたプロパティの額にあるプレフィックス@の目的は何ですか?

3)ソースLanguage.XMLは実際には必要ないと確信していますソースStandardText.XML内で識別された言語から直接Combobox2にデータを入力することは可能ですか?

4)どのような状況でIsEnabledプロパティをCreateModeまたはEditModeに設定する必要がありますか?

親切なアドバイスをよろしくお願いします。

よろしく、レオン

レオン

質問1への回答:

StandardText.XMLおよびLanguage.XMLファイルは変更されません(上記の投稿の説明を参照)

3つのコンボボックスのFile.XAMLまたはInventor.XAMLファイルへの変更(申し訳ありませんが、変更を強調表示できません):

<?xml version="1.0" encoding="utf-8"?>
<WPF:MainWindow>
    x:Name="FileWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:WPF="clr-namespace:CreateObject.WPF;assembly=CreateObject"

<Window.Resources>
    <XmlDataProvider>
        x:Key="Languages"
        Source="C:\Language.xml"
        XPath="/LanguageData"
    </XmlDataProvider>
    <XmlDataProvider
        x:Key="StandardTexts"
        Source="C:\StandardText.xml"
        XPath="/StandardTextData"
    </XmlDataProvider>
</Window.Resources>

<ComboBox>
    x:Name="Combobox1"
    IsEnabled="{Binding CreateMode}"
    ItemsSource="{Binding Source={StaticResource StandardTexts}, XPath="StandardTextInfo"}"
    SelectedItem="{Binding SelectedItem, ElementName=ComboBox3, Mode=OneWay}"
    # SelectedValue: no need to be defined
    # SelectedValuePath: no need to be defined
    DisplayMemberPath="{Binding ElementName=Combobox2, StringFormat=@{0}, Path=SelectedValue}"
</ComboBox>

<ComboBox>
    x:Name="Combobox2"
    IsEnabled="{Binding CreateMode}"
    ItemsSource="{Binding Source={StaticResource Languages}, XPath="LanguageInfo"}"
    SelectedValue="{Binding Prop[LanguageName].value}"
    SelectedValuePath="@LanguageName"
    DisplayMemberPath="@LanguageName"
</ComboBox>

<ComboBox>
    x:Name="Combobox3"
    IsEnabled="{Binding CreateMode}"
    ItemsSource="{Binding Source={StaticResource StandardTexts}, XPath="StandardTextInfo"}"
    SelectedItem="{Binding SelectedItem, ElementName=ComboBox1, Mode=OneWay}"
    # SelectedValue: no need to be defined
    SelectedValuePath="@StandardTextNumber"
    DisplayMemberPath="@StandardTextNumber"
</ComboBox>

</WPF:MainWindow>

最後に、期待される結果を得るための変更はそれほど多くありません。主なポイントは次のとおりです。

-understandの目的SelectedValueのSelectedValuePathは属性

-バインディング構文StringFormat = @ {0}

質問2から4は今では無意味です。

ソリューションを提供してくれたBEIJINGRNL SOFTWARE SCIENCE&TECHCO.LTDのBAIXuesongに感謝します。

宜しくお願いします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

バインディングはコンボボックスに値を入力しません

分類Dev

プログラムでテキストボックスにバインディングを入力します

分類Dev

コンボボックスバインディングMVVMC#

分類Dev

Svelteはチェックボックスバインディングをサポートしていますか?

分類Dev

コンボボックスをテキストボックスにデータバインディング

分類Dev

コレクションの再作成後にWPFコンボボックスバインディングが壊れています

分類Dev

動的コンボボックスは、アイテムが更新されたときにバインディングスコープ変数を更新しません

分類Dev

cv2.rectangleは最も近いバウンディングボックスに参加します

分類Dev

css transform:translate()%は常にバウンディングボックスのサイズを参照しますか?

分類Dev

データバインディングを使用したWpfコンボボックス:初期値が空です

分類Dev

2つのバウンディングボックスを互いに比較するMatlab

分類Dev

Scipyは画像のバウンディングボックスを描画します

分類Dev

wpfのデータバインディングコンボボックス

分類Dev

WPFでのコンボボックスデータバインディング

分類Dev

xmlタグからxamdatagridのコンボボックスまたはwpfのdatagridにデータをバインドする方法は?

分類Dev

WPFは、GridView列のテキストボックスのバインディング値を取得します

分類Dev

ボタンはコンボボックスへのバインドを有効にします

分類Dev

新しいクラスからボタンイベントにコーディングする方法は?

分類Dev

コンボボックスへのWPFバインディング

分類Dev

C#WPFコンボボックスTextElement.Foregroundバインディング

分類Dev

ドロップダウンするとコンボボックスバインディングが壊れます

分類Dev

バインディングが共有されている複数のコンボボックス-ボックスから最初に選択した後にエラーが表示されます

分類Dev

スライディングボックスは移動時に上下にジャンプします

分類Dev

Silverlightコンボボックスselectedvalue文字列プロパティバインディング

分類Dev

WPFマルチカラムコンボボックス-バインディング値は、単一のPOCOプロパティではなくPOCO全体です

分類Dev

wxpython GridCellChoiceEditorを使用してグリッドセルをコンボボックスに変更する方法は知っていましたが、このコンボボックスにバインドする方法がわかりません

分類Dev

THREE.ParametricGeometryのサイズをバウンディングボックスの寸法に変更します

分類Dev

フレックスボックスの子は、パディングとマージンのためにオーバーフローします

分類Dev

MVVMコンボボックスバインディング:より多くのソースとの間でデータを設定および取得します

Related 関連記事

  1. 1

    バインディングはコンボボックスに値を入力しません

  2. 2

    プログラムでテキストボックスにバインディングを入力します

  3. 3

    コンボボックスバインディングMVVMC#

  4. 4

    Svelteはチェックボックスバインディングをサポートしていますか?

  5. 5

    コンボボックスをテキストボックスにデータバインディング

  6. 6

    コレクションの再作成後にWPFコンボボックスバインディングが壊れています

  7. 7

    動的コンボボックスは、アイテムが更新されたときにバインディングスコープ変数を更新しません

  8. 8

    cv2.rectangleは最も近いバウンディングボックスに参加します

  9. 9

    css transform:translate()%は常にバウンディングボックスのサイズを参照しますか?

  10. 10

    データバインディングを使用したWpfコンボボックス:初期値が空です

  11. 11

    2つのバウンディングボックスを互いに比較するMatlab

  12. 12

    Scipyは画像のバウンディングボックスを描画します

  13. 13

    wpfのデータバインディングコンボボックス

  14. 14

    WPFでのコンボボックスデータバインディング

  15. 15

    xmlタグからxamdatagridのコンボボックスまたはwpfのdatagridにデータをバインドする方法は?

  16. 16

    WPFは、GridView列のテキストボックスのバインディング値を取得します

  17. 17

    ボタンはコンボボックスへのバインドを有効にします

  18. 18

    新しいクラスからボタンイベントにコーディングする方法は?

  19. 19

    コンボボックスへのWPFバインディング

  20. 20

    C#WPFコンボボックスTextElement.Foregroundバインディング

  21. 21

    ドロップダウンするとコンボボックスバインディングが壊れます

  22. 22

    バインディングが共有されている複数のコンボボックス-ボックスから最初に選択した後にエラーが表示されます

  23. 23

    スライディングボックスは移動時に上下にジャンプします

  24. 24

    Silverlightコンボボックスselectedvalue文字列プロパティバインディング

  25. 25

    WPFマルチカラムコンボボックス-バインディング値は、単一のPOCOプロパティではなくPOCO全体です

  26. 26

    wxpython GridCellChoiceEditorを使用してグリッドセルをコンボボックスに変更する方法は知っていましたが、このコンボボックスにバインドする方法がわかりません

  27. 27

    THREE.ParametricGeometryのサイズをバウンディングボックスの寸法に変更します

  28. 28

    フレックスボックスの子は、パディングとマージンのためにオーバーフローします

  29. 29

    MVVMコンボボックスバインディング:より多くのソースとの間でデータを設定および取得します

ホットタグ

アーカイブ