powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Некорректно работает конвертер.
22 сообщений из 22, страница 1 из 1
Некорректно работает конвертер.
    #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
Некорректно работает конвертер.
    #37667612
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lol2,

как ты меняешь значение то?
...
Рейтинг: 0 / 0
Некорректно работает конвертер.
    #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
Некорректно работает конвертер.
    #37667645
lol2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK,

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

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

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

давай побольше напиши, как и что связано у тебя, а то не понятнО, как ты вообще экз. userstate связываешь с каким то контролом.
...
Рейтинг: 0 / 0
Некорректно работает конвертер.
    #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
Некорректно работает конвертер.
    #37667689
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lol2,

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


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

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

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

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

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

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

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

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

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

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

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

Вот как выгледит задача до того как текущий пользователь не авторизован значение свойства userLogInOrOut = false а значит конвертер возвращает Visibility.Collapsed после того как пользователь авторизуется свойство userLogInOrOut = true и конвертер возвращает джля контрола Visibility.Visible. Вот как то так !
...
Рейтинг: 0 / 0
Некорректно работает конвертер.
    #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
Некорректно работает конвертер.
    #37669160
lol2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое всем сапасибо за помощ в решение проблемы!!!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Некорректно работает конвертер.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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