2013-06-11 47 views
2

我接管了一些其中包含XAML Listview的代碼。我注意到當前的Listview沒有全行選擇;也就是說,您無法單擊該行中的任何位置以選擇一個項目,但必須單擊該文本佔用的區域。仔細查看,我嘗試在ItemContainerStyle中添加一個Horizo​​ntalContentAlignment =「stretch」,但現在這些項目不再使用與對話框其餘部分(ExpressionDark)相同的主題。如何獲得帶有全行選擇和正確主題的XAML Listview

原來的XAML代碼:

Title="SelectUser" Height="350" Width="480" WindowStartupLocation="CenterScreen" WindowStyle="None" SizeToContent="Height" ResizeMode="NoResize"> 
<expressionDark:ExpressionDarkTheme> 
    <Border BorderBrush="DimGray" BorderThickness="2"> 
     <StackPanel Margin="12,12,12,12"> 
      <TextBlock FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,0,0,12">Select User</TextBlock> 
       <ListView Name="listViewUsers" Height="200" Width="400" ItemsSource="{Binding}" SelectionChanged="listViewUsers_SelectionChanged"> 
       <ListView.View> 
      <GridView> 
       <GridViewColumn Header="User Id" DisplayMemberBinding="{Binding Path=UserID}" Width="150"/> 
       <GridViewColumn Header="User Name" DisplayMemberBinding="{Binding Path=UserName}" Width="250"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 
      <UniformGrid Height="23" Rows="1" Columns="2" Margin="0,16,0,12" Width="Auto"> 
       <Button Name="buttonCancel" HorizontalAlignment="Center" Width="75" Height="23" IsCancel="True" Click="buttonCancel_Click">Cancel</Button> 
       <Button Name="buttonOK" HorizontalAlignment="Center" Width="75" Height="23" IsDefault="True" Click="buttonOK_Click">OK</Button> 
      </UniformGrid> 
     </StackPanel> 
    </Border> 
</expressionDark:ExpressionDarkTheme> 

Correct appearance, but no full-row select

但是,當我加入了ItemContainerStyle這樣的:

Title="SelectUser" Height="350" Width="480" WindowStartupLocation="CenterScreen" WindowStyle="None" SizeToContent="Height" ResizeMode="NoResize"> 
<expressionDark:ExpressionDarkTheme> 
    <Border BorderBrush="DimGray" BorderThickness="2"> 
     <StackPanel Margin="12,12,12,12"> 
      <TextBlock FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" Margin="0,0,0,12">Select User</TextBlock> 
       <ListView Name="listViewUsers" Height="200" Width="400" ItemsSource="{Binding}" SelectionChanged="listViewUsers_SelectionChanged"> 
       <ListView.ItemContainerStyle> 
        <Style TargetType="ListViewItem"> 
         <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
        </Style> 
       </ListView.ItemContainerStyle> 
       <ListView.View> 
      <GridView> 
       <GridViewColumn Header="User Id" DisplayMemberBinding="{Binding Path=UserID}" Width="150"/> 
       <GridViewColumn Header="User Name" DisplayMemberBinding="{Binding Path=UserName}" Width="250"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 
      <UniformGrid Height="23" Rows="1" Columns="2" Margin="0,16,0,12" Width="Auto"> 
       <Button Name="buttonCancel" HorizontalAlignment="Center" Width="75" Height="23" IsCancel="True" Click="buttonCancel_Click">Cancel</Button> 
       <Button Name="buttonOK" HorizontalAlignment="Center" Width="75" Height="23" IsDefault="True" Click="buttonOK_Click">OK</Button> 
      </UniformGrid> 
     </StackPanel> 
    </Border> 
</expressionDark:ExpressionDarkTheme> 

Full-row select works, but Listview items have incorrect colors

我是新來的XAML,所以我不確定我在這裏做錯了什麼。我是否需要將ExpressionDark主題應用於Listview項目?任何幫助將不勝感激。

+0

如果您已經知道了,請分享您的解決方案嗎? –

回答

0

我遇到了同樣的問題。我所有的控件都使用ExpressionDark主題。

這是我如何解決這個問題:

<ListBox HorizontalContentAlignment="Stretch"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid Background="Transparent"> 
       <!-- here is my custom content --> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

這一切開始於Grid元素加入Background="Transparent"屬性後,正常工作。

相關問題