연결 버튼 컨트롤 데이터(WPF)

0

질문

나는 응용 프로그램에서 보여주는 20 그래픽 버튼 컨트롤 MainWindow(Button1Button20). 각각의 버튼은 제어 표시할 수 있는 내용 문자열이며,도구 설명을 설계되었는 다음과 같다:

<Button x:Name="button1" FontWeight="Bold" FontSize="15" Content="" HorizontalAlignment="Left" Margin="20,69,0,0" VerticalAlignment="Top" Width="92" Height="29" Click="Button_Click" Background="#FFFFFFFF" MouseEnter="button_MouseEnter">
        <Button.ToolTip>
            <Border Margin="-4,0,-4,-3" Padding="10" Background="Yellow">
                <Border.BitmapEffect>
                    <OuterGlowBitmapEffect></OuterGlowBitmapEffect>
                </Border.BitmapEffect>
                <Label x:Name ="lbl1" FontSize="20" Content="{Binding Path=ToolTip}">
                </Label>
            </Border>
        </Button.ToolTip>
        <Button.Effect>
            <DropShadowEffect/>
        </Button.Effect>
    </Button>

하고 싶을 정의 문자열 내용 문자열 도구 설명을 위해 각각의 버튼에서는 XML 파일도록 이 정보를 변경할 수 있습을 수정하여 XML 파일입니다.

이를 위해,나를 만들었 뷰 모델,객체를 정의한 소위 Bouton(프랑스):

public class Bouton : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    void Notify(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    int boutonNumber;
    public int BoutonNumber{ get { return boutonNumber; } set { boutonNumber= value; Notify("BoutonNumber"); } }
    string texteBouton;
    public string TexteBouton { get { return texteBouton; } set { texteBouton = value; Notify("TexteBouton"); } }
    string tooltip;
    public string Tooltip { get { return tooltip; } set { tooltip = value; Notify("ToolTip"); } }
    public Bouton(int nb, string tb, string tt)
    {
        BoutonNumber = nb;
        TexteBouton = tb;
        Tooltip = tt;
    }
}

을 읽을 때 XML 파일을 만들는 20 개의 Bouton 유형에 대한 정보를 boutonNumber,콘텐츠,도구 설명을 확인합니다. 그런 다음 이러한 모든 Bouton 객체 저장된 목록으로 컬렉션입니다.

지금 내가 원하는 사용할 데이터 바인딩 나 Bouton 목록과 그래픽 컨트롤 내 MainWindow 할 수 있는 콘텐츠를 표시 문자열 도구 설명 문자열에서 각각의 버튼입니다. 에서합니다.을 사용하여 다음과 같은 코드:

public MainWindow()
    {
        InitializeComponent();
        List<Bouton> lst = Utilities.CreateList();
        this.DataContext = lst;
    }

는 lst 목록 컬렉션을 올바르게 초기화됩니다.

하지만 난 어떻게 데이터 바인딩에서 작동 버튼을 제어합니다. 할 수 있는 방법을 각각의 20 컨트롤 버튼을 올바르게 링크를 해당 Bouton 체(에 포함된 Boutons 컬렉션)? 나는 방법을 의미할 수 있습 Button1 제어의 문자열에서 내 Bouton1 개체 Button2 제어의 문자열에서 Bouton2 개체까지 Button20 제어 및 Bouton20object?

당신의 도움을 주셔서 감사합니다. 참고로 나는 초보자 WPF 고 이번이 처음 WPF 프로젝트를 Visual Studio.

c# controls windows wpf
2021-11-22 16:00:24
1

최고의 응답

0

내가 생각하는 가장 간단한 옵션을 포장 버튼을 정렬.

이 정렬 다음을 포함하는 시설의 종류 Bouton (지 명명 btw. -경우에도 다른 언어로,이 용어는"버튼"이 이미 존재하므로,이는 오히려 모호합니다. As a non-native english speaker,나는 추천을 받고 사용하는 이름,영어에서 그것을 저장할 것이 당신의 많은 두통에서 오래 실행되지만 될 수 있는 주관적인)

할 수 있습니다 다음에 직접 바인딩하는 속성에 정렬의 템플릿입니다. 당신이해야 할 모든 당신은 각각 지정 정렬의 올바른 버튼 데이터입니다.

예를 들어.

public class CustomButton : UserControl
{
    public Bouton ParsedButtonData { get; set; }

    public CustomButton()
    {
        DataContext = this;
        InitializeComponent();
    }
}

과에서 당신의 정렬의 템플릿:

<Button ...>
    <Button.ToolTip>
        <Border ...>
            <Label Content="{Binding ParsedButtonData.Tooltip}" ...>
            </Label>
        </Border>
    </Button.ToolTip>
</Button>

할 수 있습치 정렬에 XAML 다음과 같다:

xmlns:ctrls="clr-namespace:MyProject.MyNamespace"

<ctrls:CustomButton name="myFirstButton"/>

지금 당신이해야 할 모든 당신을 확인한 각 CustomButton 는 그들의 ParsedButtonData 설정하면 해당 작품의 데이터입니다. 당신은 설정할 수 있습니다 이에 대해 수동으로 각 단추에서 만들어진 XAML,또는 당신을 만들 수 있습니다 CustomButtons 를 통해 C#에서 첫 번째 장소입니다.

를 만드는 경우 UserControls XAML,예를 들어:

public void SomeMethod()
{
    myFirstButton.ParsedButtonData = lst[0];
}

또는,당신은 모드로 설정할 수 있습니다 확장 ItemsControl. 그것은 기본적으로 만들에 대한 이 정렬 응용 프로그램입니다. 는 ItemsControl 는 ItemsSource 될 수 있는 모든 컬렉션 등과 같은 유형 List<>ObservableCollection<>. 그 다음에 만들의 어린이는 컬렉션을 설정,매핑되는 자동적으로 대응하는 요소에서 말했 목록입니다.

예제의 것 DataGridListView. 내가 찾는 것은 조금 더 많은 관여 하지만,당신이 정말로 원하는 장소의 무리는 버튼을 하나의 화면에 표현합니다.

2021-11-22 17:47:49

나는 진짜로 당신의 관심을 가져 주셔서 감사합에 대한 내 질문에 답변 및 정보의 코드를 주었습니다. 나는 그것을 가능한 한 빨리 사용해보십시오. 감사합니다 당신의 도움에 대 한 많은!
Bruno Barral

이 코드를 어제입니다. 나는 여전히 몇 가지 질문이 있:내가 만들어 클래스 CustomButton inheritate 에서 버튼을(아니라 정렬 당신이 제안한 대로)그러나 나는 오류 메시지를 클릭에 대한 이벤트는 존재하지 않에 CustomButton 클래스입니다. 나는 놀란 때문에 기본 클래스(버튼)는 클릭하 이벤트로 구현했다. 도 호출 베이스.(클릭)에서 CustomButton 하지만 나는 아직도 오류 메시지가 표시됩니다. 가 나는 이유를 클릭하 이벤트에 존재하지 않 CustomButton 으로,그것은 존재하에서 버튼을 클래스입니다.
Bruno Barral

왜 당신이 사용하여 정렬 대신 상속의 버튼에서? 에 정렬,당신은 쉽게 등록을 클릭에 대한 이벤트 버튼에 위치합니다.
Shrimperator

인 것으려고 합니다. 감사합니다.
Bruno Barral

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................