Bir WPF sayfam var. Sayfada bazı içerik var, ancak sayfanın kök düzeninin son alt bileşeni, oluşturduğum bir kullanıcı denetimi. Bu şuna benzer: Varsayılan olarakWPF: Tetikleyici Property özelliği içindeki diğer denetimlere nasıl başvurulur?
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4" />
<!-- The following border is red and holds the content -->
<Border
Width="{Binding ElementName=txt, Path=ActualWidth}"
Height="{Binding ElementName=txt, Path=ActualHeight}"
Margin="{Binding ElementName=txt, Path=Margin}"
HorizontalAlignment="{Binding ElementName=txt, Path=HorizontalAlignment}"
VerticalAlignment="{Binding ElementName=txt, Path=VerticalAlignment}"
Background="Red">
<TextBlock
Name="txt"
Width="200"
Height="100"
Margin="20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="This is my super awesome message!" />
</Border>
</Grid>
</UserControl>
, UserControlViewModel
nesnenin IsOn
özelliği, false
ayarlı yani kullanıcı denetimi görünür değildir. Bu özelliği true
olarak değiştiren bir mantık uyguladık ve sonra kullanıcı denetimi soluk olan tüm diğer bileşenlerin önünde görüntülenir. Bu iyi çalışıyor.
Şimdi, görünür hale geldikten sonra kullanıcı denetiminin arkasındaki bileşenleri azaltan bir soluk efekti animasyonu oluşturmak istiyorum. Ardından, sol taraftaki içeriğin soluklaşmasını engelleyen kırmızı kenarlığı yapmak istiyorum.
Önce solma efektiyle başlayalım.
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4">
<!-- The following style is new code -->
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<Trigger Property="{Binding ElementName=grid, Visibility}" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.0"
To="0.4"
Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
...
Ama problem var: Ben arka plan bileşenlerinin karartma yapmak gerekiyordu ki Border
bu tarz yazdım bir bağımlılık özelliği olmadığı için ben, tetiği Property
bağlayıcı belirleyemezsiniz. grid
, Visible
'a ayarlandığında Visibility
özelliğine sahip olduğunda tetikleyicimin tetiklenmesini söylemenin bir yoluna ihtiyacım var. Lütfen yardım edin ve teşekkür ederim!
İkinci problem, kırmızı sınırın nasıl hareket edildiğini bilmiyorum, bu yüzden bazı ölçek dönüşümleri konusunda yardıma ihtiyacım var, sanırım ... Bir kez daha teşekkürler!
, harika! – Boris
Sadece ilk kez çalışıyor! NİYE YA!? – Boris
@myermian: Ne demek istediğinden emin değilim. Birkaç cümlede açıklar mısınız lütfen? Teşekkürler. – Boris