XAMLデータバインディングとDataTemplateの使用について理解し始めており、非常に便利です。
次のステップに進み、以下のコードにロジックを組み込むための最良の方法は何ですか。たとえば、「Address2」に何かがあるかどうかを確認し、ある場合はそれを表示するか、外部アドレスを別の方法でフォーマットするなどです。
<Window.Resources>
<DataTemplate x:Key="CustomersTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="35"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Rectangle Height="30" Width="30" Margin="0 4 0 0" Fill="LightGreen" Grid.Column="0" VerticalAlignment="Top"/>
<StackPanel Margin="3 0 0 10" Orientation="Vertical" Grid.Column="1">
<TextBlock Text="{Binding Path=ContactName}"/>
<TextBlock Text="{Binding Path=CompanyName}"/>
<TextBlock Text="{Binding Path=Address}"/>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, {1} {2}">
<Binding Path="City"/>
<Binding Path="Region"/>
<Binding Path="PostalCode"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox Name="dataListBox" ItemTemplate="{StaticResource CustomersTemplate}"/>
</Grid>
完全を期すためのコードは次のとおりです(Northwindで自動生成されたLINQ to SQLクラス)。
CustomerDataContext dc = new CustomerDataContext();
var query = from companyName in dc.Customers
select companyName;
dataListBox.ItemsSource = query.ToList();