ObservableCollection
Layer をTreeView
WPFの a にバインドしました。
レイヤーの定義は次のとおりです。
public class Layer
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Color { get; set; }
public GeoType Type { get; set; }
}
public enum GeoType { Area, Line, Point }
これはTreeView
XAML です:
<TreeView Grid.Column="0"
ItemsSource="{Binding Layers}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding SubLayers}">
<StackPanel Orientation="Horizontal">
<Canvas Background="LightGray">
<Ellipse Fill="{Binding Color}"
Height="15"
Width="15"
StrokeThickness="5"
Stroke="{Binding Color}"/>
</Canvas>
<TextBlock Margin="20,0,0,0" Text="{Binding Path=Name}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
GeoType
プロパティに基づいて形状タイプを指定したい。上記の XAML で canvas ではなく Line である場合GeoType
は、Line である必要があります。バインディングを使用してそれを行うにはどうすればよいですか? コンバーターを作成する必要がありますか?