سؤال

لدي خاصية اعتماد مخصصة أود استخدامها كعدرة بيانات. هنا هو الرمز وراء:

public static readonly DependencyProperty BioinsulatorScannedProperty =
    DependencyProperty.Register(
        "BioinsulatorScanned", 
        typeof(bool), 
        typeof(DisposablesDisplay), 
        new FrameworkPropertyMetadata(false));

    public bool BioinsulatorScanned
    {
        get
        {
            return (bool)GetValue(BioinsulatorScannedProperty);
        }
        set
        {
            SetValue(BioinsulatorScannedProperty, value);
        }
    }

لقد أنشأت نمط النمط والتحكم. هدفي هو تغيير لون بعض النص عندما يتم تعيين دعامة التبعية إلى True ...

<Style x:Key="TreatEye" TargetType="Label">
        <Setter Property="Foreground" Value="#d1d1d1" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="FontSize" Value="30" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <Canvas>                            
                        <TextBlock x:Name="bioinsulatorText" 
                                   Canvas.Left="21" Canvas.Top="33" 
                                   Text="Bioinsulator" />
                        <TextBlock Canvas.Left="21" Canvas.Top="70" 
                                   Text="KXL Kit" />
                    </Canvas>

                    <ControlTemplate.Triggers>
                        <DataTrigger Binding="{Binding BioinsulatorScanned}"
                                     Value="True">
                            <Setter TargetName="bioinsulatorText" 
                                    Property="Foreground" Value="Black" />
                        </DataTrigger>
                    </ControlTemplate.Triggers>

                </ControlTemplate>
            </Setter.Value>
        </Setter>            
    </Style>

على الرغم من إعداد دعامة التبعية بنجاح برمجيا، فإن هذا الشرط الزناد لا يحرر أبدا. هذا ألم حقيقي لتصحيح!

شكرا مقدما.

هل كانت مفيدة؟

المحلول

يبدو أن خاصية التبعية الخاصة بك محددة داخل DisposableDisplay الكائن الذي قمت بإنشائه. من أجل الملزمة المحددة للعمل، مثيل ذلك DisposableDisplay يجب تعيين الكائن كما DataContext من عنصر التحكم (التسمية في هذه الحالة) أو أي من أسلافها.

نصائح أخرى

في هذه الحالة، أقوم بتبديل رؤية زر باستخدام DataTrigger بناء على خاصية التبعية Firstlevreproperty.

public static readonly DependencyProperty FirstLevelProperty = DependencyProperty.Register("FirstLevel", typeof(string), typeof(MyWindowClass));

public string FirstLevel
        {
            get
            {
                return this.GetValue(FirstLevelProperty).ToString();
            }

            set
            {
                this.SetValue(FirstLevelProperty, value);
            }
        }

يمكنك الرجوع إلى خاصية التبعية FirstLevel(Property) الواردة (في هذه الحالة) في نافذة باستخدام RelativeSource ربط. كما يجب عليك تعيين الإعداد الافتراضي في النمط، وسيتم تجاوزه بواسطة DataTrigger.

<Button.Style>
    <Style TargetType="Button">
        <Style.Triggers>
            <DataTrigger 
             Binding="{Binding Path=FirstLevel,
             RelativeSource={RelativeSource FindAncestor,
             AncestorType={x:Type Window}}}" 
             Value="SomeValue">
                <Setter Property="Visibility" 
                 Value="Hidden" />
             </DataTrigger>
        </Style.Triggers>
        <Setter Property="Visibility" Value="Visible" />
    </Style>
</Button.Style>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top