2012-12-08 4 views

Odpowiedz

2

Można użyć MultiBinding z StringFormat parametru:

<Button> 
    <MultiBinding StringFormat="{}{0}{1}"> 
     <Binding> 
      <Binding.Source> 
       <sys:String> String1 </sys:String> 
      </Binding.Source> 
     </Binding> 
     <Binding Path="{DynamicResource String2}" /> 
    </MultiBinding> 
</Button> 
+1

To nie działa. Otrzymuję String2 od ResourceDictionary. –

0

Jak o wiązaniu zawartości do wartości w modelu widoku lub modelu, a następnie można ustawić to dużo więcej łatwo do tego, co chcesz dynamicznie i mieć o wiele większą kontrolę nad nim. Oczywiście trzeba by być przy użyciu MVVM ..

jednak odpowiedź 2kay jest lepiej ...

1

prosty, niezbyt skalowalny sposób na radzenie sobie z tym byłoby:

<Window x:Class="AdHocWPF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow" Height="350" Width="525"> 
<Window.Resources> 
    <System:String x:Key="String2">String2</System:String> 
</Window.Resources> 
<Grid> 
    <Button> 
     <TextBlock> 
      <System:String>String1 </System:String> 
      <TextBlock Text="{DynamicResource String2}"/> 
     </TextBlock> 
    </Button> 
</Grid> 
</Window> 

TextBlocks to w zasadzie małe dokumenty przepływu, więc są bardzo elastyczne.

5

Kod w XAML jest następujący:

<Button> 
     <TextBlock> 
      <Run Text="String1"/> 
      <Run Text="{DynamicResource String2}"/> 
     </TextBlock> 
</Button>