2009-03-20 16 views
0

要するに、XAML-Buttonに使用するXML ButtonSettings要素を定義し、そのButtonに適用されたスタイルで選択したButtonSettings要素の子を使用したいとします。指定したXML要素にバインド

これは可能ですか?

XMLのサンプル:

<Buttons> 
    <ButtonSettings ID="Bye"> 
    <Text lang="NL">Doei!</Text> 
    <Text lang="DE">Tsusch!</Text> 
    <Text lang="FR">Bonjour</Text> 
    <Text lang="EN">CU</Text> 
    <Image>D:\bye.PNG</Image> 
    </ButtonSettings> 
</Buttons> 

各ボタンに対しては、私はそれがIDです指定し、使用するButtonSettingsを選択します。次に、そのButtonSettings要素をスタイルにバインディングまたはdatacontextとして渡したいと思います。選択された要素の子要素(TextやImageなど)がスタイルで使用されます。

ボタンのコンテンツを選択して定義することは、スタイルではなくボタンで直接定義する限り、完全に機能します。 これは、単一のボタンに対して私が持っているXAMLです:

<Button 
      x:Name="ByeButton" 
      DataContext="{StaticResource dataProvider}"> 
      <Button.Content> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition/> 
         <RowDefinition/> 
        </Grid.RowDefinitions> 
        <TextBlock Grid.Row="0"> 
         <TextBlock.Text> 
          <Binding XPath="//ButtonSettings[@ID='Bye']/Text[@lang='FR']" /> 
         </TextBlock.Text>       
        </TextBlock> 
        <Image Grid.Row="1" Width="20" Height="20"> 
         <Image.Source> 
          <Binding XPath="//ButtonSettings[@ID='Bye']/Image" /> 
         </Image.Source> 
        </Image> 
       </Grid> 
      </Button.Content> 
     </Button> 

は、私は、各ボタンの[ID =「ID」@] // ButtonSettingsを定義することが可能とスタイルは、レイアウトの残りの部分を扱うようにしたいですボタンと内容とテキストを入れてください。 これはできますか?

答えて

1

あなたはItemsControlを探していて、自分のデータタイプをターゲットとするDataTemplateの中にボタンを配置すると思います。

+0

要は、Buttonsettings-instanceのIDをButtonに渡すことによって、各ボタンに対して、使用するButtonSettingsのインスタンスを指定したいということです。 ItemsContolでは、lostboxと同様に、リストボックスは各アイテムが取得するアイテムを指定します。そのため、私は自分のUIをあまり支配していません。 – Loy

関連する問題