2016-09-04 2 views
0

나는 vm 콜렉션에 바인딩 된 listview를 가지고있다. listview에는 단추가 포함되어 있으며 사용자가 단추를 누르면 색상이 변경됩니다. 그러나, 나는 이것을하는 방법을 알아낼 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.WPF Listview 단추의 색이 설정 되었습니까?

<ListView 
    x:Name="GridControlOrders" 
    SelectionMode="Single" 
    ItemsSource="{Binding Orders}" 
    SelectedItem="{Binding Sale}" 
    ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
    ScrollViewer.VerticalScrollBarVisibility="Auto">     
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Button Style="{StaticResource StyleButtonOrders}"> 
       <Grid> 
        <TextBlock Text="{Binding DisplayData}" 
         HorizontalAlignment="Center" 
         VerticalAlignment="Center" 
         TextAlignment="Center"   
         TextWrapping="Wrap" /> 
       </Grid> 
      </Button> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <EventSetter Event="PreviewMouseDown" Handler="ItemOnPreviewMouseDown" /> 
      <EventSetter Event="PreviewMouseUp" Handler="ItemOnPreviewMouseUp" /> 
      <Setter Property="Width" Value="{Binding Source={x:Static p:Settings.Default}, Path=CardViewCardWidthItem, Mode=TwoWay}" /> 
      <Setter Property="Height" Value="{Binding Source={x:Static p:Settings.Default}, Path=CardViewCardHeightItem, Mode=TwoWay}" /> 
     </Style> 

    </ListView.ItemContainerStyle> 
    <ListView.Resources> 
     <Style TargetType="{x:Type ScrollBar}" BasedOn="{StaticResource StyleScrollBarTouchscreenNarrow}"/> 
    </ListView.Resources> 
</ListView> 


<Style TargetType="{x:Type Button}" x:Key="StyleButtonTouchscreen" BasedOn="{StaticResource {x:Type Button}}"> 
     <Setter Property="Width" Value="Auto"/> 
     <Setter Property="Height" Value="Auto"/>   
     <Setter Property="Margin" Value="0"/> 
     <Setter Property="Template" Value="{StaticResource ButtonTouchControlTemplate}"/> 
</Style> 

<ControlTemplate x:Key="ButtonTouchControlTemplate" TargetType="{x:Type ButtonBase}"> 
    <Border x:Name="border" 
     BorderBrush="{TemplateBinding BorderBrush}" 
     BorderThickness="{TemplateBinding BorderThickness}" 
     Background="{TemplateBinding Background}" 
     SnapsToDevicePixels="True"> 
      <ContentPresenter x:Name="contentPresenter" 
       ContentTemplate="{TemplateBinding ContentTemplate}" 
       Content="{TemplateBinding Content}" 
       ContentStringFormat="{TemplateBinding ContentStringFormat}" 
       Focusable="False" 
       HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
       Margin="{TemplateBinding Padding}" 
       RecognizesAccessKey="True" 
       SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
       VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="ToggleButton.IsChecked" Value="True"> 
      <Setter Property="Background" TargetName="border" Value="Red"/> 
      <Setter Property="BorderBrush" TargetName="border" Value="Red"/> 
     </Trigger> 

     <Trigger Property="Button.IsDefaulted" Value="True"> 
      <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
     </Trigger> 

     <Trigger Property="IsPressed" Value="True"> 
      <Setter Property="Background" TargetName="border" Value="Orange"/> 
     </Trigger> 

     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/> 
      <Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/> 
      <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="#FF838383"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

답변

0

당신은 항목 (또는 버튼)을 클릭하면 색상을 변경 버튼이있는 목록보기를 만들나요? 당신은 단지 하나 개의 버튼을 원한다면 당신은 당신이 원하는 경우 배경 또는 = "복수"의 selectionMode을 변경 한 번에 ListView에에,

<ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="DataContext" Value="{Binding}" /> 
        <Setter Property="Height" Value="30" /> 
        <Setter Property="HorizontalAlignment" Value="Stretch" /> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="ListViewItem"> 
           <Border Background="Transparent" > 
            <Button x:Name="button" HorizontalAlignment="Left" Width="150" Content="{Binding DisplayData}" IsHitTestVisible="False"/> 

           </Border> 
           <ControlTemplate.Triggers> 
            <Trigger Property="IsSelected" Value="True"> 
             <Setter TargetName="button" Property="Background" Value="Red"/> 
            </Trigger> 
           </ControlTemplate.Triggers> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </ListView.ItemContainerStyle> 

또한있는 ListViewItem의에 isSelected 속성 세트의 selectionMode = "싱글"을 이용할 수 있습니다 단추를 한 번에 클릭하면 배경이 바뀝니다.

+0

대단히 감사합니다. 그게 내가 원하는거야. – Saoirse