powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / подскажите по UserControl
7 сообщений из 7, страница 1 из 1
подскажите по UserControl
    #37328459
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xaml view

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<myctrls:CustomExpander ExpandDirection="Down" Header="Фильтры">
                    <myctrls:CustomExpander.ControlContent>
                        <StackPanel Margin="2" VerticalAlignment="Center" Orientation="Vertical">
                                
 				...

                                <toolkit:Separator></toolkit:Separator>

                                <myctrls:OsMenuItem Margin="0,2,0,0" Header="Test">
                                    <toolkit:MenuItem.Icon>
                                        <CheckBox IsChecked="{Binding Path=FilterData.IsBuy, ElementName=_CmpView, Mode=TwoWay}"></CheckBox>
                                    </toolkit:MenuItem.Icon>
                                </myctrls:OsMenuItem>

                            </toolkit:ContextMenu>
                        </StackPanel>
                    </myctrls:CustomExpander.ControlContent>
                </myctrls:CustomExpander>

xaml контрола

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Grid x:Name="LayoutRoot" Background="White">
        <toolkit:Expander x:Name="expander" Style="{StaticResource ExpanderScaleStyle}" ExpandDirection="{Binding ExpandDirection}"
                          Header="{Binding Header}">
            <Popup x:Name="popup">
                <ContentPresenter Content="{Binding ControlContent}">

                </ContentPresenter>
            </Popup>
        </toolkit:Expander>
    </Grid>

cs контрола

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
public partial class CustomExpander : UserControl
    {
        public object ExpandDirection
        {
            get { return (object)GetValue(ExpandDirectionProperty); }
            set { SetValue(ExpandDirectionProperty, value); }
        }

        // Using a DependencyProperty as the backing store for ExpandDirection.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty ExpandDirectionProperty =
            DependencyProperty.Register("ExpandDirection", typeof(object), typeof(CustomExpander), new PropertyMetadata(null));


        public object Header
        {
            get { return (object)GetValue(HeaderProperty); }
            set { SetValue(HeaderProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Header.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty HeaderProperty =
            DependencyProperty.Register("Header", typeof(object), typeof(CustomExpander), new PropertyMetadata(null));

        public object ControlContent
        {
            get { return (object)GetValue(ControlContentProperty); }
            set { SetValue(ControlContentProperty, value); }
        }

        // Using a DependencyProperty as the backing store for ControlContent.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty ControlContentProperty =
            DependencyProperty.Register("ControlContent", typeof(object), typeof(CustomExpander), new PropertyMetadata(null));



        public CustomExpander()
        {
            InitializeComponent();
            this.Loaded += new RoutedEventHandler(CustomExpander_Loaded);
        }


        void CustomExpander_Loaded(object sender, RoutedEventArgs e)
        {
           this.DataContext = this;
        }

    }

клас фильтров

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
public class Filter : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private bool _isBuy;
        public bool IsBuy
        {
            get { return _isBuy; }
            set
            {
                if (value != this._isBuy)
                {
                    this._isBuy = value;
                    this.NotifyPropertyChanged("IsBuy");
                }
            }
        }
        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }

       
    }

затем в cs файле view создаю екзампляр фильтра, подписываюсь на PropertyChanged. Проблема в следующем если использую базовый Expander то все нормально прибиндивается,
если своей то ничего не происходит._CmpView кодбехайнд для разметки, ElementName=_CmpView вобше наверно можно убрать если кастом контрол используется.Но влюбом случае и так и так не работает
...
Рейтинг: 0 / 0
подскажите по UserControl
    #37330861
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может быть немного неправильно суть проблемы описал(

вобшем не биндится к свойству IsChecked RadioButton'а свойство FilterData.IsBuy, если я использую свой експандер. Все, что я засунул в ControlContent отрисовывается нормально, но привязки не происходит, может как то вобше подругому можно нужно сделать?
...
Рейтинг: 0 / 0
подскажите по UserControl
    #37331501
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что это this.DataContext = this ?????
...
Рейтинг: 0 / 0
подскажите по UserControl
    #37331511
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы прибиндить свой-ва текущего объекта
он из датаконтекста берет их
...
Рейтинг: 0 / 0
подскажите по UserControl
    #37331550
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не в обиду, но это бред
...
Рейтинг: 0 / 0
подскажите по UserControl
    #37331553
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PropertyMetadata у ExpandDirectionProperty & HeaderProperty ложны быть с аттрибутами перерисовки и пересчета размеров контрола.
Лучше посмотреть релизацию готового варианта
...
Рейтинг: 0 / 0
подскажите по UserControl
    #37331565
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как тогда правильно привязать?, и про готовое решение непонял
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / подскажите по UserControl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]