[ad_1]
私は「Visual Studio 2022」に取り組んでおり、「.NET Framework 4.8.1」を使用して派生コントロールを作成しています。 私の場合は「ツールヒント」であり、そのカスタム依存関係プロパティの問題に直面しています。 カスタム依存関係プロパティの値を既定値以外に変更するたびに、アプリを実行して閉じた後、「Visual Studio」の「プロパティ エディター」でフィールドが空になります!!!
私が試したこと:
これは、派生した「ToolTip」コントロールのコード例です。
C#
namespace MyControlLibrary.Controls { public class MyToolTip : ToolTip { public enum IconTypes { Custom, Error, Information, None, Question, Warning, } public static readonly DependencyProperty IconTypeProperty = DependencyProperty.Register(nameof(IconType), typeof(IconTypes), typeof(MyToolTip), new FrameworkPropertyMetadata(IconTypes.None, new PropertyChangedCallback(OnIconTypeChanged))); [Category("MyCategory")] [Description("...")] public IconTypes IconType { get { return (IconTypes)GetValue(IconTypeProperty); } set { SetValue(IconTypeProperty, value); } } private static void OnIconTypeChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { } static MyToolTip() { //DefaultStyleKeyProperty.OverrideMetadata(typeof(MyToolTip), new FrameworkPropertyMetadata(typeof(MyToolTip))); } public MyToolTip() { } } }
そして、これは私がそれを「MainWindow」にテストする方法です:
XML
<Window x:Class="MyApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:local="clr-namespace:MyApp" xmlns:MyControls="clr-namespace:MyControlLibrary.Controls;assembly=MyControlLibrary" Title="MainWindow" Height="450" Width="800" WindowStartupLocation="CenterScreen"> <Grid> <Button Content="MyToolTip Test" Cursor="Hand" Padding="9" HorizontalAlignment="Center" VerticalAlignment="Center"> <Button.ToolTip> <MyControls:MyToolTip> <StackPanel> <TextBlock Text="MyToolTip Test!!!"/> </StackPanel> </MyControls:MyToolTip> </Button.ToolTip> </Button> </Grid> </Window>
また [^]これが問題を再現するVS解決策です!!!
なぜこれが起こっているのですか?
解決策 1
カスタム ツールチップの例を次に示します。 コントロール ツールチップ – 完全な WPF チュートリアル[^].
ツールチップのようにコントロールを拡張したい場合は、そのような DP を追加するだけではありません。 延長についての記事を書きました。 ToggleButton
作ります ToggleSwitch
コントロール: C# および VB での柔軟な WPF ToggleSwitch Lookless コントロール[^]. ダウンロードして試してみて、記事を読んで参考にして、独自のカスタム コントロールを作成してください。
[ad_2]
コメント