جعل نمط زر شريط الأدوات ينطبق على UserControls في شريط الأدوات

StackOverflow https://stackoverflow.com/questions/947293

  •  09-09-2019
  •  | 
  •  

سؤال

كيف يمكنني إجبر Usercontrols في WPF الموجودة داخل شريط أدوات لاستخدام نمط الزر شريط الأدوات الافتراضي؟

لدي تحكم مستخدم بسيط يسمى ImageButton الذي لديه XAML شيء مثل هذا:

<UserControl x:Class="myNameSpace.ImageButtonUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="imageButton"
    >
    <Button Style="{Binding ElementName=imageButton, Path=ButtonStyle}">
        <StackPanel Orientation="Horizontal">
            <Image Source="{Binding ElementName=imageButton, Path=ImageSource}"
                   VerticalAlignment="Center" 
                   />
            <TextBlock Text="{Binding ElementName=imageButton, Path=Text}" 
                       Style="{Binding ElementName=imageButton, Path=TextStyle}"
                       VerticalAlignment="Center"
                       />
        </StackPanel>
    </Button>
</UserControl>

لدي بعض خصائص التبعية في التعليمات البرمجية وراء تلك المسارات الملزمة وكل شيء يعمل بشكل جيد.

هذا حتى أضعه في شريط الأدوات. عادة عند وضع الأزرار في شريط أدوات يتم استيعابها بواسطة شريط الأدوات لتبدو وكأنها أزرار شريط الأدوات. لقد اكتشفت كيف يمكنني تغيير هذا النمط (انظر toolbar.buttonstylekey.. وبعد ولكن كيف يمكنني تطبيق النمط المحدد بالفعل على خاصية تبعية نمط تحكم المستخدم الخاص بي؟

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

المحلول

أوه، اعتذاري! أنا أسيء تفسير سؤالك. امنح هذه بالرصاص:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
    Hello, world!
</Button>

الأرقام فقط الأزرار الأزرار، لذلك لا يمكن تطبيقها إلا على الأزرار. (والتي لن تكون مشكلة من خلال مظهر تعليقك.)

نصائح أخرى

لقد وجدت طريقة، والتي يبدو أنها تعمل، على الرغم من أنني مهتم بطرق أخرى لحل هذا.

أضفت معالج حدث محمل إلى UserControl ووضع هذا داخله.

if (button.Style == null && this.Parent is ToolBar)
{
    button.Style = (Style)FindResource(ToolBar.ButtonStyleKey);
}

حيث يوجد زر هو اسم الزر داخل Usercontrol.

ستحتاج إلى بعض السحر الأسود القوي من أجل الحصول عليها لإنشاء نمط جديد يعمل لكسر UserControl تلقائيا. هناك أنماط مدمجة لكل نوع من التحكم المدمج الذي يمكنك إضافته إلى شريط الأدوات. (لاحظ أن ToolBar.Buttonstylekey غير وحده.) ستحتاج إلى حرفة وتطبيق النمذ الخاص بك الذي يطابق عناصر شريط الأدوات القياسية بنفسك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top