저는 데스크톱 응용 프로그램에서 WPF로 작업하고 있습니다. 내 XAML 코드에서 목록 상자가있는 탭 항목을 만들었습니다. 이제 xaml.cs 파일에서 버튼을 클릭하여 iam에 1 탭을 추가하십시오. 내가 원했던 것은 버튼 클릭시 새로 생성 된 탭에 다른 데이터가있는 목록 상자가 있어야한다는 것입니다. 그래서, 어떻게 생성되는 모든 탭에 대해 비슷한 템플릿을 유지합니까? 모든 탭 항목에 대해 비슷한 스타일 템플릿을 만드는 방법이 있다는 것을 알고 있습니다. 하지만 같은 스타일을 유지하고 싶지는 않지만 데이터 소스를 동적으로 제공 할 동일한 컨트롤을 유지해야합니다. WPF Tabcontrol 모든 탭에 대해 같은 종류의 템플릿
<DataTemplate x:Key="ValueStyle" >
<TextBlock ToolTip="{Binding Path=Value}" VerticalAlignment="Center" Margin="2" Padding="2" Text="{Binding Path=Value}" />
</DataTemplate>
<Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Focusable" Value="False"/>
<Setter Property="Width" Value="16"/>
<Setter Property="Height" Value="16"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border Width="16" Height="16" Background="Transparent" Padding="5,5,5,5">
<Path x:Name="ExpandPath" Fill="Transparent" Stroke="#FF989898" Data="M0,0 L0,6 L6,0 z">
<Path.RenderTransform>
<RotateTransform Angle="135" CenterX="3" CenterY="3"/>
</Path.RenderTransform>
</Path>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ExpandPath" Property="Stroke" Value="#FF1BBBFA"/>
<Setter TargetName="ExpandPath" Property="Fill" Value="Transparent"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="ExpandPath" Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="180" CenterX="3" CenterY="3"/>
</Setter.Value>
</Setter>
<Setter TargetName="ExpandPath" Property="Fill" Value="#FF595959"/>
<Setter TargetName="ExpandPath" Property="Stroke" Value="#FF262626"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Resources>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" MouseLeftButtonDown="ListItemClicked">
<Border Width="{Binding Path=Level, Converter={StaticResource ConvertLevelToIndent}}" />
<ToggleButton x:Name="tb" ClickMode="Press" IsChecked="{Binding Path=IsExpanded}" Style="{StaticResource ExpandCollapseToggleStyle}"/>
<TextBlock FontSize="14" Text="{Binding Path=r1}" Width="100" />
<TextBlock FontSize="14" Text="{Binding Path=r2}" Width="100" />
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=SubKeyCount}" Value="0">
<Setter Property="Visibility" TargetName="tb" Value="Hidden"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
바인딩을 사용할 수 있습니까? –
나는 이미 클래스 변수 r1과 r2에 데이터를 한정했다. 어떤 구속력이 있니? 설명해 주실 수 있습니까? – Surjeet