2017-06-15 71 views
2

我有DataGrid,我試圖通過選擇行而不是單元格來更改所選項目。正如你可以從下面的圖片看到,當我點擊單元格外的項目不會更新。通過單擊行選擇DataGrid中的行

GIF of user trying to select row on blank cell

<DataGrid x:Name="customerListBox" SelectedItem="{Binding SelectedCustomer, UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single" IsReadOnly="True" ItemsSource="{Binding Customers}" Margin="10,57,10,10" AlternationCount="2" BorderThickness="1" SnapsToDevicePixels="True" AutoGenerateColumns="False" BorderBrush="Black" Foreground="Black"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Id}" Header="Id"/> 
     <DataGridTextColumn Binding="{Binding Name}" Header="Name"/> 
     <DataGridTextColumn Binding="{Binding Phone}" Header="Phone"/> 
     <DataGridTextColumn Binding="{Binding Email}" Header="Email"/> 
    </DataGrid.Columns> 
</DataGrid> 

我能做些什麼來得到它的工作是在最後一列的寬度設置爲*然而,這使得頭部中央和寬屏幕監視器上顯示時,看起來雜亂無章。

<DataGridTextColumn Binding="{Binding Email}" Width="*" Header="Email"/> 

Column when set to *

回答

2

我有解決辦法來解決這個問題,只是在最後一列之後添加虛擬空列與寬度= 「*」

+0

是的,工作和使用@danieleSartori'SelectionUnit'使它看起來更整潔。只是感覺有點哈克大聲笑 – Bish25

+0

@ Bish25 - 選擇與FullRow尋找選擇所有行,如果你滿意如何看,那麼他的解決方案更好 –

+0

你的解決方案工作謝謝:) – Bish25

1

你試過嗎?

customerListBox.SelectionUnit = DataGridSelectionUnit.FullRow; 

您還可以使用

customerListBox.SelectionMode = DataGridSelectionMode.Extended; 

要允許多個選擇,如果你需要

+0

感謝您的回覆,我試過但沒有效果,因爲我相信它是因爲它沒有分配專欄。只是想知道是否有解決方案,而不是自定義標題。 – Bish25