Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / подскажите по UserControl / 7 сообщений из 7, страница 1 из 1
29.06.2011, 11:18
    #37328459
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по UserControl
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
30.06.2011, 15:28
    #37330861
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
подскажите по UserControl
может быть немного неправильно суть проблемы описал(

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


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