Autor Beitrag
csharpuser1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Mi 23.11.16 18:13 
Guten Tag,

ich habe Stackpanels in einer Listbox.

Etwa so:

Textbox1 Checkbox1 Combobox1
Texbox2 Checkbox2 Combobox2
..

Ist es möglich, dass ich immer nur die Selected Zeile in meiner Listbox aktiviert habe und die restlichen deaktiviert sind?

Grüße
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2274
Erhaltene Danke: 419

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 23.11.16 22:05 
Guten Abend csharpuser1,

geh' mal einen Schritt zurück und betrachte deine Fragestellung aus der Sicht eines Lesers, der nichts über dein vorheriges Thema bescheid weiss und sich diesem hier stellt.
Er wird keinen Bezug zu den Stackpanels sowie zu den anderen Controls finden, geschweige denn, wie diese zu der ListBox stehen.
Formliere die Fragestellung daher etwas verständlicher.

Als Ergänzung, wenn du ein passendes Usercontrol erstellst, welches die anderen Controls beherbergt und die nötigen Eigenschaften sowie Ereignisse bereitstellt, würdest du dir dabei leichter tun.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
csharpuser1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Do 24.11.16 09:53 
Guten Tag,

was wäre das denn für ein Usercontrol, welches andere controls beherbergen kann und die ereignisse bereitstellt?:b
csharpuser1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Do 24.11.16 10:03 
anders gefragt:

Es würde mir reichen wenn ich die Eigenschaft isEnabled des StackPanels in der Listbox im Code verändern könnte. Sprich: Ich selektiere ein Item in der Listbox, dan soll genau das Stackpanel isEnabled = true bekommen, welches sich in der Zeile befindet.


ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
<ListBox ItemsSource="{Binding TimerUnits}" Margin="10,38,118,10" x:Name="listbox" SelectionMode="Single" SelectionChanged="listbox_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" IsEnabled=" {Binding IsSelected}">
                        <TextBlock Text="{Binding Path=Item.Name}" Width="60"/>
                        <CheckBox x:Name="isDefault" IsChecked="{Binding IsDefault}" IsEnabled="{Binding IsEnabled}" Width="50" Checked="CheckBoxDefault_Checked" Unchecked="CheckBoxDefault_UnChecked"/>
                        <CheckBox x:Name="isMaster"  IsChecked="{Binding IsMaster}" IsEnabled="{Binding IsEnabled}" Width="45" Checked="CheckBoxMaster_Checked" Unchecked="CheckBoxMaster_UnChecked"/>
                        <TextBox x:Name="TextBox_Master_Channel" Text="{Binding IsTextMasterChannel}" Width="60" IsEnabled="{Binding IsEnabledMaster}"/>
                        <TextBox x:Name="Textbox_Channel" Text="{Binding IsTextChannel}" Width="60" IsEnabled="{Binding IsEnabled}"/>
                        <ComboBox x:Name="ComboBox_Test" ItemsSource="{Binding Path=Item.Clocks}" IsEnabled="{Binding IsEnabled}" Width="50"/>
                        <TextBox x:Name="Textbox_Frequenz" Text="{Binding IsTextFrequenz}" Width="60" IsEnabled="{Binding IsEnabled}"/>
                        <Slider x:Name="mySlider" Width="75" Minimum="0" Maximum="100" IsSnapToTickEnabled="True" IsEnabled="{Binding IsEnabledMaster}"/>
                        <TextBox x:Name="Textbox_Slider" TextWrapping="NoWrap" Width="25" Text="{Binding ElementName=mySlider,Path=Value}" IsEnabled="{Binding IsEnabledMaster}"/>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>



Vielleicht ist eine Listbox auch das ganz falsche Element, ich brauche ja im Prinzip eine Art Tabelle, kann man nicht irgendwie eine Tabelle machen, die dynamisch gefüllt wird mit Checkboxen Slidern und Comboboxen drin, bei der einzelne Zellen deaktiviert werden können?
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3977
Erhaltene Danke: 813

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Do 24.11.16 12:14 
Für eine Tabellenansicht benutze ein ListView, s. ListView with a GridView.

Generell ist die Seite WPF Tutorial eine gute erste Anlaufstelle, um sich über WPF und deren Controls zu informieren.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2274
Erhaltene Danke: 419

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 24.11.16 14:04 
Panel_ListBox

Ganz schlicht gehalten:

ausblenden volle Höhe C#-Quelltext
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:
namespace WpfApplication1
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            listBox1.Items.RemoveAt(listBox1.SelectedIndex);
        }

        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            wpfUC a = new wpfUC();
            listBox1.Items.Add(a);
        }
    }

    public class wpfUC : StackPanel
    {
        public wpfUC()
        {
            this.Orientation = System.Windows.Controls.Orientation.Horizontal;

            TextBox = new TextBox();
            CheckBox = new CheckBox();
            ComboBox = new ComboBox();

            TextBox.Width = 70;
            TextBox.Margin = new Thickness(10200);
            TextBox.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            TextBox.VerticalAlignment = System.Windows.VerticalAlignment.Top;
            CheckBox.Margin = new Thickness(10500);
            CheckBox.Width = 13;
            CheckBox.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            CheckBox.VerticalAlignment = System.Windows.VerticalAlignment.Top;
            ComboBox.Margin = new Thickness(10100);
            ComboBox.Width = 70;
            ComboBox.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            ComboBox.VerticalAlignment = System.Windows.VerticalAlignment.Top;

            this.Children.Add(TextBox);
            this.Children.Add(CheckBox);
            this.Children.Add(ComboBox);
        }

        public TextBox TextBox { get; set; }
        public CheckBox CheckBox { get; set; }
        public ComboBox ComboBox { get; set; }
    }
}

Statt so wie hier gegeben, wäre eine List<wpfUC> praktisch, um an eine bestimmte CheckBox z.B heranzukommen.
Mehr war jetzt in der Pause nicht drin.
Einloggen, um Attachments anzusehen!
_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 864
Erhaltene Danke: 143

Win7
VS 2013, VS2015
BeitragVerfasst: Fr 25.11.16 00:57 
Falls du noch das Projekt mit der Listbox und dem DataTemplate hast: Ich glaube, du kannst der Listbox für das selektierte Item ein eigenes Template mitgeben.

Ich habe es vor 2 Jahren irgendwie hinbekommen, dass das Listitem anders aussah, wenn es selektiert ist. Ich glaube aber mittlerweile, wenn du so viel Komplexität unterbringen möchtest ist ein UserControl das Beste.

Dem UserControl kannst du dann z.. eine Selected oder Enabled-Eigenschaft geben. Deine Listbox bekommt dann als ItemTemplate im Grunde nur noch das UserControl. Ich bin zwar ein Fan davon, möglichst viel in XAML zu machen, aber alles muss auch nicht sein...
csharpuser1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Fr 25.11.16 16:24 
Danke schonmal für die Antworten, ich bin das Wochenende über im Urlaub und ich werde es mir am Montag anschauen und mich damit beschäftigen!
csharpuser1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51



BeitragVerfasst: Di 29.11.16 17:57 
Habt mir sehr weitergeholfen danke! Hab es mit dem Ansatz hinbekommen.