Chcę pokazać listę obiektów Customer w WPF ItemsControl. Utworzyłem w tym celu DataTemplate:
<DataTemplate DataType="{x:Type myNameSpace:Customer}">
<StackPanel Orientation="Horizontal" Margin="10">
<CheckBox"></CheckBox>
<TextBlock Text="{Binding Path=Number}"></TextBlock>
<TextBlock Text=" - "></TextBlock>
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</StackPanel>
</DataTemplate>
To, czego chcę, to w zasadzie prosta lista (z polami wyboru), która zawiera NUMER - NAZWA. Czy nie ma sposobu, w jaki mogę połączyć numer i nazwę bezpośrednio w części Binding?
źródło
Jeśli chcesz połączyć wartość dynamiczną z tekstem statycznym, spróbuj tego:
<TextBlock Text="{Binding IndividualSSN, StringFormat= '\{0\} (SSN)'}"/>
Wyświetlacze : 234-334-5566 (SSN)
źródło
Zobacz następujący przykład, którego użyłem w moim kodzie przy użyciu klasy Run:
<TextBlock x:Name="..." Width="..." Height="..." <Run Text="Area="/> <Run Text="{Binding ...}"/> <Run Text="sq.mm"/> <LineBreak/> <Run Text="Min Diameter="/> <Run Text="{Binding...}"/> <LineBreak/> <Run Text="Max Diameter="/> <Run Text="{Binding...}"/> </TextBlock >
źródło
Możesz także użyć pliku run, który można powiązać. Przydatne rzeczy, zwłaszcza jeśli chce się dodać trochę formatowania tekstu (kolory, grubość czcionki itp.).
<TextBlock> <something:BindableRun BoundText="{Binding Number}"/> <Run Text=" - "/> <something:BindableRun BoundText="{Binding Name}"/> </TextBlock>
Oto oryginalna klasa:
Oto kilka dodatkowych ulepszeń.
A to wszystko w jednym kawałku kodu:
public class BindableRun : Run { public static readonly DependencyProperty BoundTextProperty = DependencyProperty.Register("BoundText", typeof(string), typeof(BindableRun), new PropertyMetadata(new PropertyChangedCallback(BindableRun.onBoundTextChanged))); private static void onBoundTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { ((Run)d).Text = (string)e.NewValue; } public String BoundText { get { return (string)GetValue(BoundTextProperty); } set { SetValue(BoundTextProperty, value); } } public BindableRun() : base() { Binding b = new Binding("DataContext"); b.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(FrameworkElement), 1); this.SetBinding(DataContextProperty, b); } }
źródło