Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Некорректно работает конвертер. / 22 сообщений из 22, страница 1 из 1
17.02.2012, 17:06
    #37667599
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
Доброго времени суток!Приступлю сразу к делу. У меня есть конвертер
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class AuthenticationConverter : IValueConverter
02.    {
03. 
04. 
05.        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
06.        {
07.            if ((bool)value == true)
08.            {
09.                return Visibility.Visible;
10.            }
11.            else
12.            {
13.                return Visibility.Collapsed;
14.            }
15.        }
16.        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
17.        {
18.            throw new NotImplementedException();
19.        }
20.    }



И есть класс public
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class UserState
02.    {
03.        public bool userLogInOrOut { get; set; }
04. 
05.        public UserState()
06.        {
07.            userLogInOrOut = true;
08.        }
09.    }



Который хранит статус пользователя тоесть авторизован он или нет. А конвертер на основе значения свойства bool userLogInOrOut возваращает значение если true Visibility.Visible если false то Visibility.Collapsed.

Дальше создаю ресурс
Код: xml
1.
2.
3.
4.
1.<UserControl.Resources>
2.        <local:AuthenticationConverter x:Key="AuthConverter"/>
3.        <state:UserState x:Key="userState"/>
4.    </UserControl.Resources>



чтоб привиаться к классу UserState и доступ к самому конвертеру.

Дальше связываюь со свойством нужного мне контрола
Код: xml
1.
<Visibility="{Binding Path=userLogInOrOut, Source={StaticResource userState}, Converter={StaticResource AuthConverter}}"/>


В свойство у нас bool userLogInOrOut = true а значит конвертер вернёт Visibility.Visible так оно и есть! А вот если мы меняем значение свойства bool userLogInOrOut с контролом ничего не проиходит. Почему ? И как такое поведение можно реализовать?
...
Рейтинг: 0 / 0
17.02.2012, 17:11
    #37667612
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

как ты меняешь значение то?
...
Рейтинг: 0 / 0
17.02.2012, 17:17
    #37667624
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
Ну например контрол который находится на MainPage в конструкторе
Код: c#
1.
2.
3.
4.
5.
6.
7.
public MainPage()
        {
            InitializeComponent();
            UserState state = new UserState();
            state.userLogInOrOut = false;
           
        }



вот как то так. Кстати я использую тип проекта silverlight business application.
...
Рейтинг: 0 / 0
17.02.2012, 17:28
    #37667645
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Вы не скажите есть ли примеры приложений скажем на основе роли пользователя заприщать ему доступ к некоторым контролам пусть изменения свойства Visibility? Ну не важно что главное за что нибудь заципиться?
...
Рейтинг: 0 / 0
17.02.2012, 17:29
    #37667647
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

тебе над в классе реализовать INotifyPropertyChanged. в инете посмотришь как его реализуют.
...
Рейтинг: 0 / 0
17.02.2012, 17:30
    #37667651
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Если вы имеете в виду реализовать для UserState то я уже пробовал и понту нет (((
...
Рейтинг: 0 / 0
17.02.2012, 17:32
    #37667656
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

давай побольше напиши, как и что связано у тебя, а то не понятнО, как ты вообще экз. userstate связываешь с каким то контролом.
...
Рейтинг: 0 / 0
17.02.2012, 17:41
    #37667677
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Вот страница на которой всё это происходит.

Код: xml
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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
<UserControl 
  x:Class="GuestBook.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
  xmlns:uriMapper="clr-namespace:System.Windows.Navigation;assembly=System.Windows.Controls.Navigation"
  xmlns:dataControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit" 
  xmlns:login="clr-namespace:GuestBook.LoginUI"
  xmlns:local="clr-namespace:GuestBook.Helpers"
  xmlns:state="clr-namespace:GuestBook"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" Loaded="UserControl_Loaded">
    
    <UserControl.Resources>
        <local:AuthenticationConverter x:Key="AuthConverter"/>
        <state:UserState x:Key="userState"/>
    </UserControl.Resources>
    
        <Grid x:Name="LayoutRoot" Style="{StaticResource LayoutRootGridStyle}">

        <Border x:Name="ContentBorder" Style="{StaticResource ContentBorderStyle}">
            <navigation:Frame x:Name="ContentFrame" Style="{StaticResource ContentFrameStyle}" 
                              Source="/Home" Navigated="ContentFrame_Navigated" NavigationFailed="ContentFrame_NavigationFailed">
                <navigation:Frame.UriMapper>
                    <uriMapper:UriMapper>
                        <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
                        <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
                    </uriMapper:UriMapper>
                </navigation:Frame.UriMapper>
            </navigation:Frame>
        </Border>

        <Grid Style="{StaticResource NavigationOuterGridStyle}">
            <Grid x:Name="NavigationGrid" Style="{StaticResource NavigationGridStyle}">

                <Border x:Name="BrandingBorder" Style="{StaticResource BrandingBorderStyle}">
                    <StackPanel x:Name="BrandingStackPanel" Style="{StaticResource BrandingStackPanelStyle}">

                        <ContentControl Style="{StaticResource LogoIcon}"/>
                        <TextBlock x:Name="ApplicationNameTextBlock" Style="{StaticResource ApplicationNameStyle}" 
                               Text="{Binding Strings.ApplicationName, Source={StaticResource ApplicationResources}}"/>

                    </StackPanel>
                </Border>

                <Border x:Name="LinksBorder" Style="{StaticResource LinksBorderStyle}">
                    <StackPanel x:Name="LinksStackPanel" Style="{StaticResource LinksStackPanelStyle}">

                        <HyperlinkButton x:Name="Link1" Style="{StaticResource LinkStyle}" 
                                     NavigateUri="/Home" TargetName="ContentFrame" Content="{Binding Path=Strings.HomePageTitle, Source={StaticResource ApplicationResources}}"/>

                        <Rectangle x:Name="Divider1" Style="{StaticResource DividerStyle}"/>

                        <HyperlinkButton x:Name="Link2" Style="{StaticResource LinkStyle}" 
                                     NavigateUri="/About" TargetName="ContentFrame" Content="{Binding Path=Strings.AboutPageTitle, Source={StaticResource ApplicationResources}}"/>
                        <Rectangle x:Name="Divider2" Style="{StaticResource DividerStyle}"/>

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                       <HyperlinkButton x:Name="Link3" Style="{StaticResource LinkStyle}" 
                                     NavigateUri="/GuestBookPage" TargetName="ContentFrame" Content="{Binding Path=Strings.GuestBookPageTitle, Source={StaticResource ApplicationResources}}" Visibility="{Binding Path=userLogInOrOut, Source={StaticResource userState}, Converter={StaticResource AuthConverter}}"/>

Вот тут я привязываюсь к классу UserState  а точней к свойству userLogInOrOut  через ресурс userState.  Конвертер опредиляет значение свойство и возвращает Visibility;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                    </StackPanel>
                </Border>

            </Grid>

            <Border Style="{StaticResource LoginContainerStyle}">
                <login:LoginStatus x:Name="loginStatus"/>
            </Border>
        </Grid>
    </Grid>

</UserControl>
...
Рейтинг: 0 / 0
17.02.2012, 17:46
    #37667689
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

а потом ты, используешь это :
Код: c#
1.
2.
UserState state = new UserState();
            state.userLogInOrOut = false;


чтобы изменить значение?
...
Рейтинг: 0 / 0
17.02.2012, 17:47
    #37667690
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Да)) А что не так ?
...
Рейтинг: 0 / 0
17.02.2012, 17:49
    #37667693
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

ну, получается по факту, что :
state экземпляр никак не связан с <state:UserState x:Key="userState"/>
поэтому ничего и не происходит.
...
Рейтинг: 0 / 0
17.02.2012, 17:51
    #37667694
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

ППЦ. А как сделать по другому не подскажите ?
...
Рейтинг: 0 / 0
17.02.2012, 17:52
    #37667698
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

а что ты сделать хочешь?
...
Рейтинг: 0 / 0
17.02.2012, 17:53
    #37667702
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Изменить значение и чтоб и чтоб на это DataBinding среагировал и вызвал конвертер!
...
Рейтинг: 0 / 0
17.02.2012, 17:54
    #37667703
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

а каким образом хочешь изменить значение?
...
Рейтинг: 0 / 0
17.02.2012, 17:56
    #37667708
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Например при вызове события private void Authentication_LoggedIn(object sender, AuthenticationEventArgs e)!
...
Рейтинг: 0 / 0
17.02.2012, 18:00
    #37667711
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

когда, я понял.
а посредством чего?
...
Рейтинг: 0 / 0
17.02.2012, 18:02
    #37667713
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Я не понял ваш вопрос? Ну я имею в вдеу как мне получить доступ к ресурсу который находится в разметке и изменить значение свойства!
...
Рейтинг: 0 / 0
17.02.2012, 18:10
    #37667723
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2,

а ты вон, про что.
попробуй метод FindResource
...
Рейтинг: 0 / 0
17.02.2012, 18:14
    #37667729
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
AlexeiK,

Вот как выгледит задача до того как текущий пользователь не авторизован значение свойства userLogInOrOut = false а значит конвертер возвращает Visibility.Collapsed после того как пользователь авторизуется свойство userLogInOrOut = true и конвертер возвращает джля контрола Visibility.Visible. Вот как то так !
...
Рейтинг: 0 / 0
18.02.2012, 12:06
    #37668327
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
lol2AlexeiK,

Вот как выгледит задача до того как текущий пользователь не авторизован значение свойства userLogInOrOut = false а значит конвертер возвращает Visibility.Collapsed после того как пользователь авторизуется свойство userLogInOrOut = true и конвертер возвращает джля контрола Visibility.Visible. Вот как то так !

Для такого функционала этот класс должен реализовывать INotifyPropertyChanged

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class UserState
    {
        public bool userLogInOrOut { get; set; }

       public UserState()
        {
           userLogInOrOut = true;
        }
    }
...
Рейтинг: 0 / 0
19.02.2012, 13:45
    #37669160
lol2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректно работает конвертер.
Большое всем сапасибо за помощ в решение проблемы!!!
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Некорректно работает конвертер. / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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