none
依赖属性使用动态资源,更换资源文件,无法更新 RRS feed

  • 问题

  •     public abstract class Displayable: DependencyObject
        {
            /// <summary>
            /// DisplayNameProperty
            /// </summary>
            /// <value>DisplayNamePropertyvalue>
            public static readonly DependencyProperty DisplayNameProperty = DependencyProperty.Register("DisplayName", typeof(string), typeof(Displayable),new UIPropertyMetadata(""));
    
    
            /// <summary>
            /// DisplayName.
            /// </summary>
            /// <value>DisplayName.</value>
            public string DisplayName
            {
                get { return (string)GetValue(DisplayNameProperty); }
                set
                {
                    if ((string)GetValue(DisplayNameProperty) != value)
                    {
                        SetValue(DisplayNameProperty, value);
                    }
                }
            }
        }

    我自定义了一个这样的类,里面有个依赖属性。

                                            <ItemsControl ItemsSource="{TemplateBinding TitleLinks}" 
                                                <ItemsControl.ItemsPanel>
                                                    <ItemsPanelTemplate>
                                                        <StackPanel Orientation="Horizontal" />
                                                    </ItemsPanelTemplate>
                                                </ItemsControl.ItemsPanel>
                                                <ItemsControl.ItemTemplate>
                                                    <DataTemplate>
                                                        <StackPanel Orientation="Horizontal">
    
                                                            <Button Content="{Binding DisplayName}"
                                                                    Command="navigation:LinkCommands.NavigateLink"
                                                                    CommandParameter="{Binding Source}"
                                                                    CommandTarget="{Binding ElementName=ContentFrame}"
                                                                    Style="{StaticResource SystemButtonLink}" />
                                                        </StackPanel>
                                                        <DataTemplate.Triggers>
                                                            <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
                                                                <Setter Property="Visibility" TargetName="Separator" Value="Collapsed"/>
                                                            </DataTrigger>
                                                        </DataTemplate.Triggers>
                                                    </DataTemplate>
                                                </ItemsControl.ItemTemplate>
                                            </ItemsControl>

    在windows的样式中这样显示DisplayName

        <zdy:ZdyWindow.TitleLinks>
            <zdy:Source="/Pages/Settings.xaml" x:Name="测试" DisplayName=“{DynamicResource Settings”/>
        </zdy:ZdyWindow.TitleLinks>

    窗口代码里这样为设置个动态资源,当我更换资源文件的时候,他并不会更新,怎么解决?

    但是用C#代码,测试.DisplayName=“测试2”; 这样他就会变

    2015年5月21日 11:37

答案

  • Hi 廖礼佳,

    根据你提供的代码段,我无法重现你的问题。我不知道这个“<zdy:ZdyWindow.TitleLinks>” 是做什么用的,是类似于“Window.Resources”的意思?

    如果需要引用外联样式的话,一般的写法是这样的

    <Window.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Pages/Settings.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Window.Resources>

    <ResourceDictionary.MergedDictionaries>节点下可以添加多个资源文件,这边我只是提供了比较常见的写法,如果你的问题还是无法解决,请在OneDrive上共享的代码,并且将链接回复到帖子上。

    Best Regards,

    Xavier Eoro


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月22日 2:07
    版主

全部回复

  • 你需要给出如何更换资源,还有完整的代码,最好能简化你的例子。
    2015年5月21日 13:05
  • Application.Current.Resources.MergedDictionaries.FirstOrDefault(d => d.Source.OriginalString.Contains("anguage")).Source = Properties.Settings.Default.Language_Uri;
    2015年5月21日 13:56
  • Hi 廖礼佳,

    根据你提供的代码段,我无法重现你的问题。我不知道这个“<zdy:ZdyWindow.TitleLinks>” 是做什么用的,是类似于“Window.Resources”的意思?

    如果需要引用外联样式的话,一般的写法是这样的

    <Window.Resources>
    <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Pages/Settings.xaml"/>
    </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
    </Window.Resources>

    <ResourceDictionary.MergedDictionaries>节点下可以添加多个资源文件,这边我只是提供了比较常见的写法,如果你的问题还是无法解决,请在OneDrive上共享的代码,并且将链接回复到帖子上。

    Best Regards,

    Xavier Eoro


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月22日 2:07
    版主