我遇到了一些意外的行爲,我正在爲C#WPF應用程序工作。在其他網格上褪色的WPF網格具有非活動控件
懸崖版本是我有3個網格,所有「居住」在窗體上的同一區域。基於一些切換按鈕,這些網格被啓用或禁用並淡入和淡出。但是,似乎在某些情況下可以使用某些文本框,而其他文件夾則不能使用。
這裏是我申請的樣式:
<!-- Fade in/out style for grid -->
<Style
x:Key="FadeInOutStyle"
TargetType="Grid">
<Style.Triggers>
<Trigger
Property="IsEnabled"
Value="True">
<Trigger.Setters>
<Setter
Property="Panel.ZIndex"
Value="1"/>
</Trigger.Setters>
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.0"
To="1.0"
Duration="0:0:0.8"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="1.0"
To="0.0"
Duration="0:0:0.4"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
<Trigger
Property="IsEnabled"
Value="False">
<Trigger.Setters>
<Setter
Property="Panel.ZIndex"
Value="0"/>
</Trigger.Setters>
</Trigger>
</Style.Triggers>
的風格似乎適用就好,網格淡入和淡出視野預期。以下是其中一個「已檢查」功能,可以啓用已檢查的網格並禁用其他網格。如果你想看到其他人只是這麼說,但是這將是一個比特犬和小馬顯示:
private void IndividualRadio_Checked(object sender, RoutedEventArgs e)
{
this.TwoIndividualGrid.IsEnabled = false;
this.CommercialGrid.IsEnabled = false;
this.IndividualGrid.IsEnabled = true;
}
這裏是XAML的電網之一。它們都只有標籤和TextBox控件。他們一開始都是用相同的利潤率和類似dimmensions:
<Grid
Name="IndividualGrid"
IsEnabled="False"
Height="30"
Width="420"
Opacity="0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="10,90,0,0"
Style="{StaticResource FadeInOutStyle}"
Panel.ZIndex="0">
<Label
Content="First Name"
Height="25"
Width="90"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Margin="0,0,0,0"/>
<TextBox
Name="SubjFirstNameBox"
Height="30"
Width="100"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Style="{StaticResource ValidationStyle}"
Margin="100,0,0,0">
<TextBox.Text>
<Binding
Path="SubjFirstName"
Mode="TwoWay">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Label
Content="Last Name"
Height="25"
Width="90"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Margin="210,0,0,0"/>
<TextBox
Name="SubjLastNameBox"
Height="30"
Width="100"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Style="{StaticResource ValidationStyle}"
Margin="310,0,0,0">
<TextBox.Text>
<Binding
Path="SubjLastName"
Mode="TwoWay">
<Binding.ValidationRules>
<ExceptionValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</Grid>
而且,只是因爲我知道有人可能會問,看看吧,這裏有我綁定屬性的幾個例子。在這種情況下,第一名稱/ SubjFirstName文本框不工作,但姓氏/ SubjLastName文本框的作用:
private string subjFirstName;
public string SubjFirstName
{
get { return subjFirstName; }
set { subjFirstName = value; }
}
private string subjLastName;
public string SubjLastName
{
get { return subjLastName; }
set { subjLastName = value; }
}
因此,沒有人看到我在這裏搞亂?我假設它必須是堆疊的網格,所以如果有人有更好的方法,我很樂意聽到它。我相當肯定我以前就是這樣做的,而且我認爲禁用和設置面板索引是可以做到的。
到目前爲止,我可以在第一個視圖中看到,您錯過了繼承'INotifyPropertyChanged'('System using。ComponentModel')並添加'public event PropertyChangedEventHandler PropertyChanged; /// ///通知更改的UI /// 私人無效OnPropertyChanged(字符串propertyName的) { 如果(的PropertyChanged!= NULL){ 的PropertyChanged(這一點,新PropertyChangedEventArgs(propertyName的) ); } }'也是你需要添加例如'OnPropertyChanged(「SubjLastName」)'給設置者。 –
k1ll3r8e
我其實需要在我的視圖模型中繼承INotifyPropertyChanged,但是暫時不影響其他字段。我現在只是設計用戶界面。我也看到了與錯過相關的錯誤,在這種情況下它不會導致我的問題。 – MattB
當你說'某些文本框可以被使用而其他人不能'時,你可以改進你的意思嗎?他們完全沒有功能/不接受投入,或者與綁定有什麼不妥之處,或者......? – goobering