【问题标题】:WinRT - change value of Flyout Setter programaticallyWinRT - 以编程方式更改 Flyout Setter 的值
【发布时间】:2015-07-30 02:22:28
【问题描述】:

在一个 Windows 商店应用项目中,我有一个 Flyout,具有某种风格

<Flyout>

...

      <Flyout.FlyoutPresenterStyle>
                <Style TargetType="FlyoutPresenter">
                    <Setter Property="ScrollViewer.ZoomMode" Value="Enabled"/>
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="BorderBrush" Value="Transparent"/>
                    <Setter Property="BorderThickness" Value="5"/>
                    <Setter Property="MinHeight" Value="300"/>
                    <Setter Property="MinWidth" Value="300"/>
                    <Setter x:Name="FlyMargin" Property="Margin" Value="0,0,0,0"/>
                </Style>
            </Flyout.FlyoutPresenterStyle>
        </Flyout>

我试图在后面的代码中以编程方式更改边距,但到目前为止我失败了

我试过这样:~

InfoFlyout.FlyoutPresenterStyle.Setters.Add(new Setter
    {
        Property = FlyoutPresenter.MarginProperty,
        Value = "50,0,0,0"
   });

它在我第一次调用弹出时有效,但第二次如果给出异常。 也尝试过类似的方法,但仍然不起作用

InfoFlyout.FlyoutPresenterStyle.Setters.ElementAt(6).SetValue(FlyoutPresenter.MarginProperty, "-28,125,0,0");

如何在后面的代码中更改 Margin Setter?

【问题讨论】:

    标签: c# xaml windows-runtime windows-store-apps


    【解决方案1】:

    看来你不能多次添加同一个 Setter。
    我建议您将 XAML 样式完全移到代码后面,设置所有属性并替换 FlyoutPresenterStyleProperty:

    var style = new Style(typeof(FlyoutPresenter));
    style.Setters.Add(new Setter(FlyoutPresenter.MarginProperty, new Thickness(50, 0, 0, 0)));
    //style.Setters.Add(new Setter(FlyoutPresenter... //Do It For All Properties
    
    YourElementName.Flyout.SetValue(Flyout.FlyoutPresenterStyleProperty, style);
    

    在这里工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      相关资源
      最近更新 更多