programing

설정에 정의된 값에 바인딩

iphone6s 2023. 4. 22. 09:07
반응형

설정에 정의된 값에 바인딩

WPF에서 설정에 정의된 값으로 바인딩을 사용할 수 있습니까?가능하다면 샘플을 제공해주세요.

먼저 설정을 정의하는 네임스페이스를 설계하는 커스텀 XML 네임스페이스를 추가해야 합니다.

xmlns:properties="clr-namespace:TestSettings.Properties"

다음으로 XAML 파일에서 다음 구문을 사용하여 기본 설정 인스턴스에 액세스합니다.

{x:Static properties:Settings.Default}

최종 결과 코드는 다음과 같습니다.

<ListBox x:Name="lb"
         ItemsSource="{Binding Source={x:Static properties:Settings.Default},
                               Path=Names}" />

출처: WPF - [설정]에서 정의된 속성에 컨트롤을 바인드하는 방법


주의: @Daniel 및 @nabulke에서 지적했듯이 설정 파일의 액세스 수식자를 다음과 같이 설정하는 것을 잊지 마십시오.Public 범위:User

위의 해법은 효과가 있지만, 꽤 장황하게...대신 다음과 같이 커스텀 마크업 확장을 사용할 수 있습니다.

<ListBox x:Name="lb" ItemsSource="{my:SettingBinding Names}" />

이 내선번호 코드는 다음과 같습니다.

public class SettingBindingExtension : Binding
{
    public SettingBindingExtension()
    {
        Initialize();
    }

    public SettingBindingExtension(string path)
        :base(path)
    {
        Initialize();
    }

    private void Initialize()
    {
        this.Source = WpfApplication1.Properties.Settings.Default;
        this.Mode = BindingMode.TwoWay;
    }
}

자세한 내용은 이쪽:http://www.thomaslevesque.com/2008/11/18/wpf-binding-to-application-settings-using-a-markup-extension/

@CSharper의 답변은 VB로 코드화된 WPF 어플리케이션에서는 동작하지 않았습니다.NET(다른 WPF 어플리케이션의 99.999%와 달리 C#이 아님)에서 다음과 같은 오류가 지속적으로 발생했기 때문에Settings에서 찾을 수 없었습니다.MyApp.Properties네임스페이스는 재구축 후에도 사라지지 않습니다.

온라인에서 많이 검색한 후, 나에게 효과가 있었던 것은, 대신에, 그 대신, 그 대신, 그 제품을 사용하는 것이었다.local응용 프로그램의 기본 창 XAML 파일에 기본적으로 생성된 XAML 네임스페이스:

<Window
    <!-- Snip -->
    xmlns:local="clr-namespace:MyApp"
    <!-- Snip -->
><!-- Snip --></Window>

...다음과 같은 방법으로 설정을 바인드합니다(여기서).MyBooleanSetting유형의 프로젝트 속성에서 정의한 설정입니다.Boolean및 스코프 사용자(기본 Friend 액세스 수식자 사용):

<CheckBox IsChecked="{Binding Source={x:Static local:MySettings.Default}, Path=MyBooleanSetting, Mode=TwoWay}"
          Content="This is a bound CheckBox."/>

설정이 실제로 보존되고 있는 것을 확인하려면 , 반드시 전화 주세요.

MySettings.Default.Save()

...코드의 이면(예:Me.Closing고객님의 이벤트MainWindow.xaml.vb파일)을 클릭합니다.

(이 Visual Studio 포럼 게시물에 대한 영감을 얻으십시오. Muhammad Siddiqi의 답변을 참조하십시오.)

UserSettings를 바인드하는 방법은 다음과 같습니다.

다음을 입력하여 종속 변수 생성propdp두 번 탭합니다.

    public UserSettings userSettings
    {
        get { return (UserSettings)GetValue(userSettingsProperty); }
        set { SetValue(userSettingsProperty, value); }
    }
    public static readonly DependencyProperty userSettingsProperty =
        DependencyProperty.Register("userSettings", typeof(UserSettings), typeof(MainWindow), new PropertyMetadata(UserSettings.Default));

이제 바인딩할 수 있습니다.userSettings기준:

Value="{Binding userSettings.SomeUserSettingHere, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

또한 사용자 설정을 변경할 때 또는 종료 시 다음 방법으로 사용자 설정을 저장해야 합니다.

UserSettings.Default.Save();

언급URL : https://stackoverflow.com/questions/845030/bind-to-a-value-defined-in-the-settings

반응형