Исходный код вики If render
Редактировал(а) Alexandr Fokin 2024/08/17 23:34
Последние авторы
author | version | line-number | content |
---|---|---|---|
1 | | |((( | ||
2 | |Conditional blocks in XAML | ||
3 | [[https:~~/~~/stackoverflow.com/questions/12999954/conditional-blocks-in-xaml>>https://stackoverflow.com/questions/12999954/conditional-blocks-in-xaml]] | ||
4 | |how to write an <If> user control for WPF XAML [duplicate] | ||
5 | [[https:~~/~~/stackoverflow.com/questions/68499748/how-to-write-an-if-user-control-for-wpf-xaml>>https://stackoverflow.com/questions/68499748/how-to-write-an-if-user-control-for-wpf-xaml]] | ||
6 | | | ||
7 | ))) | ||
8 | | |((( | ||
9 | |{{code language="c#"}}/// <summary> | ||
10 | /// Контрол отображения контента по условию | ||
11 | /// </summary> | ||
12 | [ContentProperty("ConditionalContent")] | ||
13 | public partial class IfControl : UserControl | ||
14 | { | ||
15 | public static readonly DependencyProperty ConditionProperty | ||
16 | = DependencyProperty.Register( | ||
17 | "Condition", | ||
18 | typeof(bool), | ||
19 | typeof(IfControl), | ||
20 | new PropertyMetadata(OnConditionChangedCallback) | ||
21 | ); | ||
22 | |||
23 | public static readonly DependencyProperty ConditionalContentProperty = | ||
24 | DependencyProperty.Register( | ||
25 | "ConditionalContent", | ||
26 | typeof(object), | ||
27 | typeof(IfControl), | ||
28 | new PropertyMetadata(null, OnConditionChangedCallback) | ||
29 | ); | ||
30 | |||
31 | public bool Condition | ||
32 | { | ||
33 | get { return (bool)GetValue(ConditionProperty); } | ||
34 | set { SetValue(ConditionProperty, value); } | ||
35 | } | ||
36 | public object ConditionalContent | ||
37 | { | ||
38 | get { return (object)GetValue(ConditionalContentProperty); } | ||
39 | set { SetValue(ConditionalContentProperty, value); } | ||
40 | } | ||
41 | |||
42 | public IfControl() | ||
43 | { | ||
44 | InitializeComponent(); | ||
45 | } | ||
46 | |||
47 | private void OnLoad(object sender, RoutedEventArgs e) | ||
48 | { | ||
49 | update(); | ||
50 | } | ||
51 | |||
52 | private static void OnConditionChangedCallback( | ||
53 | DependencyObject sender, | ||
54 | DependencyPropertyChangedEventArgs e) | ||
55 | { | ||
56 | if (sender is IfControl s) | ||
57 | { | ||
58 | s.update(); | ||
59 | } | ||
60 | } | ||
61 | |||
62 | private void update() | ||
63 | { | ||
64 | Content = Condition ? ConditionalContent : null; | ||
65 | } | ||
66 | |||
67 | }{{/code}}|{{code language="xml"}}<tools:IfControl | ||
68 | Condition="{Binding IsType1.Data}"> | ||
69 | <TextBox Text="Type1"></TextBox> | ||
70 | </tools:IfControl>{{/code}} | ||
71 | |||
72 | |||
73 | ))) |