2012-08-13 21 views
1

在datagrid內部的行上,如果單元格旁邊的單元格正在使用或反之,則試圖禁用單元格/字段。換句話說,用戶只能輸入一個或另一個,如果用戶輸入信息到一個單元格中,另一個應該被禁用或只讀或其他東西。我怎樣才能做到這一點?我能以某種方式創建一個轉換器嗎?同時用戶應該能夠將該單元清零,以防他不想在該單元中輸入信息。任何意見非常感謝。如果正在使用另一個單元格,則禁用DataGridCell

<DataGridTextColoumn Binding="{Binding Property1}" Header="Property1" /> 
<DataGridTextColoumn Binding="{Binding Property2}" Header="Property2" /> 

- 所以,如果我進入property1細胞的信息,那麼我不應該能夠進入任何東西到property2細胞。如果我向property2單元格輸入某些內容,那麼我不應該能夠將任何內容輸入到property1單元格中。

回答

1

一個轉換器可以工作(如你所說)。事情是這樣的

<Window 
    ... 
    xmlns:c="clr-namespace:*YourConverter'sNamespace*" 
    ... 
    /> 
<Window.Resources> 
    <c:NotBlankConverter x:Key="NotBlankConverter"/> 
</Window.Resources> 
... 
<DataGridTextColoumn 
    Binding="{Binding Property1}" 
    Header="Property1" 
    IsReadOnly="{Binding Property2, Converter={StaticResource NotBlankConverter}" 
    /> 
... 

如果您轉換器可以是這個樣子

class NotBlankConverter: IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return string.IsNullOrEmpty(value); 
    } 
    ... 
} 

更新

看來這其實是行不通的,因爲方式的IsReadOnly DP作品爲DataGridTextColumn 。有一個完整的可行的解決方案,需要實現從這些問題的東西...

.Net v4 DataGridTextColumn.IsReadOnly seems to be faulty

DataGridTextColumn - How to bind IsReadonly?

+0

出於某種原因,當我把一個斷點轉換 – TMan 2012-08-13 17:19:42

+0

我不轉換器不打當我綁定的時候,我不需要調用親屬關係嗎? – TMan 2012-08-13 17:20:04

+0

假設您之前使用過轉換器,我忽略了幾個步驟,您需要首先將其聲明爲資源。我可以編輯答案以使其更加完整。 – 2012-08-13 17:20:50

相關問題