Laden...

Forenbeiträge von Xeres Ingesamt 16 Beiträge

02.09.2011 - 19:42 Uhr

Hallo winSharp93,

danke für deine schnelle Antwort.
Ich bin mir nicht sicher, ob sich hier WPF anderst als Silverlight verhält, aber ich kann dein Beispiel mit TreeView nicht ganz bestätigen.

Hier habe ich (unter Silverlight) die Möglichkeit folgendes per XAML zu definieren:


				<sdk:TreeView>
					<sdk:TreeView.Items>
						<sdk:TreeViewItem/>
						<Button/>
						<sdk:TreeViewItem/>
					</sdk:TreeView.Items>
				</sdk:TreeView>

Und der Witz an der Sache: Der Button wird auch angezeigt.

D.h. ich kann beliebigen Inhalt platzieren. Und genau das ist es, was ich gerne vermeiden würde.
Bei Telerik habe ich bereits gesehen, dass dies auch möglich ist. Ich konnte nur nicht erkennen, wie sie das gelöst haben.

Ich weiß lediglich, dass Telerik in dem genannten Fall auf Control und nicht ItemsControl gesetzt hat.

Hast du vielleicht eine Antwort auf die Frage meines ersten Posts? Irgendwie muss es ja möglich sein die Items einer eigene Liste zu zeichnen / anzuzeigen.

02.09.2011 - 17:29 Uhr

Hallo,

ich möchte ein eigenes Control erstellen, das folgende Eigenschaften besitzt:

  • Es soll eine Liste weiterer Controls beinhalten und anzeigen
  • Es sollen nur bestimmte andere Controls als "Children" eingefügt werden können
  • Das ganze soll auch beim editieren per XAML korrekt vorgeschlagen werden (d.h. per IntelliSense sollen nur die Klassen eingefügt werden, die von einer bestimmten Klasse abgeleitet sind)

Zuerst habe ich mein Control von "ItemsControl" ableiten lassen.
Damit hatte ich natürlich bereits die Möglichkeit über "Items" weitere Controls hinzu zu fügen, allerdings habe ich keine Möglichkeit gefunden die Auswahl der möglichen Komponenten / Klassen einzuschränken.

Danach habe ich mein Control von "Control" ableiten lassen und eine eigene Item-Liste implementiert. Diese Item-Liste ist aktuell von Typ "ObservableCollection<myListControlItem>".
Das hatte nun zu dem Effekt geführt, dass ich per IntelliSense im XAML-Code auch nur Controls hinzufügen konnte, die von "myListControlItem" abgeleitet sind. Wunderbar...
Nur werden diese Controls nicht gezeichnet / angezeigt. Logisch... habe das auch nirgends implemeniert. Nur hier bin ich momentan überfragt: Was / wo muss ich ansetzen um die Items meiner eigenen Liste anzuzeigen?

Zum besseren Verständnis hier mal ein paar Zeilen Code zu meinem bisherigen Ansatz:


    public class myListControl : Control
    {
        private myListControlColl _myItems { get; set; }

        public myListControlColl myItems
        {
            get
            {
                return _myItems;
            }
        }

        public myListControl()
            : base()
        {
            _myItems = new myListControlColl();
            this.DefaultStyleKey = typeof(myListControl);
        }

        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();	
        }
    }


    public class myListControlColl : ObservableCollection<myListControlItem>
    {
    }


    public class myListControlItem : Button
    {
    }


        <local:myListControl>
            <local:myListControl.myListControlColl>
                <local:myListControlItem/>
            </local:myListControl.myListControlColl>
        </local:myListControl>

Vielen Dank im Voraus!

Gruß

02.09.2011 - 17:01 Uhr

Vielen Dank für eure Antworten.

InlineShapes war das, was mir zur Lösung geholfen hat.

@ Taipi88:

Unter Silverlight kann ich nur mit dynamics arbeiten. Daher habe ich auch keine IntelliSense. Aus dem Grund hatte ich nachgefragt.

Danke für deine Hilfe 😃

30.08.2011 - 11:53 Uhr

Hallo,

ich möchte gerne ein Word-Dokument befüllen.
Das funktioniert mit einfachen Strings und sogar mit einer eigenen (normalen Word)-Tabelle auch ganz gut.
Nun habe ich allerdings eine Word-Vorlage, die ein Excel-Element beinhaltet.
Ich würde gerne dieses Objekt ansprechen und befüllen / verändern.

Ich habe nun bereits einige Zeit gesucht, aber irgendwie finde ich keine Lösung.

Kleine Besonderheit: Ich nutze Silverlight und hierbei die AutomationFactory (also COM-Zugriff).

Im Prinzip müsste ich nur wissen, wie ich dieses Objekt anspreche.

Was ich bereits probiert habe:


                dynamic oWord = AutomationFactory.CreateObject("Word.Application");

                oWord.Visible = true;

                object oTemplatePath = "C:\\tmp\\test.dotx";
                dynamic oWordDoc = oWord.Documents.Add(ref oTemplatePath);

                dynamic tbl = oWordDoc.Tables[0];

Allerdings liefert die letzte Zeile eine Fehlermeldung.

Hat jemand eine Idee?

Noch eine 2te kleine Nebenfrage: Gibt es irgendwo eine Doku, was für Möglichkeiten man innerhalb des "Word.Application"-Objekt hat?

Vielen Dank schonmal!

Gruß

30.07.2010 - 14:10 Uhr

Übrigens: Ich habs eben auch mal mit nem CommandBinding probiert. Damit lässt sich dieses Problem auch lösen.

30.07.2010 - 11:53 Uhr

Das ging ja schnell mit den Antworten 😃

@ CSL:
Das passiert immer, sobald die Daten für die Listbox geladen werden. Der Code ist in meiner Beispielapplikation dementsprechend simpel gehalten:


	<UserControl.Resources>
		<DataTemplate x:Key="DataTemplate2">
			<Grid>
				<Button x:Name="btnTest" Content="Button" HorizontalAlignment="Left" Width="30" d:LayoutOverrides="Height"/>
			</Grid>
		</DataTemplate>
		<DataTemplate x:Key="DataTemplate1">
			<StackPanel DataContext="{Binding Source={StaticResource SampleDataSource1}}">
				<TextBlock TextWrapping="Wrap" Text="Test"/>
				<ListBox ItemTemplate="{StaticResource DataTemplate2}" ItemsSource="{Binding Collection}" Height="50" Width="118" d:LayoutOverrides="HorizontalAlignment, VerticalAlignment"/>
			</StackPanel>
		</DataTemplate>
	</UserControl.Resources>

	<Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource SampleDataSource}}">
		<ListBox ItemTemplate="{StaticResource DataTemplate1}" ItemsSource="{Binding Collection, Mode=OneWay}"/>
	</Grid>

Die SampleDataSource's sind 2 aus Blend heraus erstellte Datenquellen. Passiert auch mit den Daten, die ich aus meiner Datenbank lese.

@ gfoidl:

Danke für den Lösungsvorschlag. Bisher habe ich noch nicht mit dem Command-Objekt gearbeitet. Sollte ich mir mal anschauen

@ all:
Hab für mich eine Lösung gefunden. Ich hab die Standard-Listbox durch eine Telerik-Listbox ersetzt. Bei dieser funktioniert es ohne Probleme.

30.07.2010 - 11:28 Uhr

Hallo,

folgende Problemstellung habe ich sowohl unter WPF als auch unter Silverlight.

Ich habe eine Listbox, die im ItemTemplate eine weitere Listbox (ich nenne sie mal ListboxStufe2) beinhaltet.
ListboxStufe2 hat ein ItemTemplate das z.B. ein Button beinhaltet. Soweit so gut. Das funktioniert auch super. Sobald ich nun aber dem Button ein Event zuweise (z.B. das Click oder Loaded Event), bekomme ich eine Fehlermeldung:

NullReferenceException - "Object reference not set to an instance of an object."

Hatte schonmal jemand das gleiche Problem? Hat da jemand ne Idee, wie ich hier ein Workaround schaffen könnte?

Vielen Dank im Voraus für jede Antwort 😃

22.07.2010 - 10:15 Uhr

Das geht nicht direkt so per XAML - Code? 😮

Na gut dann mach ichs eben mit nem Converter 😃 (brauch es nämlich eigentlich für nen Tooltip)

22.07.2010 - 09:57 Uhr

Hallo,

ich hab eine kleine Frage. Ich denke das ist keine große Sache, nur werd ich bei Google momentan nicht fündig.

Ich möchte in der Text-Eigenschaft eines TextBlocks einen eigenen Text definieren und einen "dynamischen" Text aus deinem Binding laden.

Also in etwa sowas hier:

... Text="Firma: " + {Binding FIRMA} ....

Der Syntax ist so selbstverständlich falsch, aber ich denke es ist verständlich, was ich möchte.

Wie muss ich den Syntax anpassen, damit das funktioniert?

07.05.2010 - 13:26 Uhr

Danke für die schnelle Antwort 😃

Das war anfangs auch meine Idee, allerdings bin ich an der Bindung-Expression gescheitert. Ich weiß also nicht, wie das Binding geschrieben werden muss bzw. wie ich von Kind auf das Parent bzw. umgekehrt komme.

Könntest du mir hier weiterhelfen?

07.05.2010 - 10:55 Uhr

Hallo,

für ein aktuelles Projekt benötige ich eine Listbox mit einem Itemtemplate, in dem lediglich eine Checkbox enthalten ist.
Sobald der User auf eine Checkbox klickt, möchte ich, dass das entsprechende Item in die Listbox.SelectedItems-Collection geschrieben wird.

Das funktioniert auch soweit. Hier der Zwischenstand meiner derzeitigen Lösung:


<DataTemplate x:Key="templateItem">
    <Grid>
        <CheckBox Name="chkDummy" Content="{Binding Property1}" Checked="chkDummy_Checked" Unchecked="chkDummy_Checked"/>
    </Grid>            
</DataTemplate>

<ListBox Width="150" Height="200" ItemTemplate="{StaticResource templateItem}" ItemsSource="{Binding Collection, Source={StaticResource SampleDataSource}}"
	SelectionChanged="ListBox_SelectionChanged" SelectionMode="Multiple" x:Name="listbox" />

Hier noch der Source-Code der chkDummy_Checked-Routine:

private void chkDummy_Checked(object sender, RoutedEventArgs e)
        {            
            Expression.Blend.SampleData.SampleDataSource.Item checkedItem = (((CheckBox)sender).DataContext as Expression.Blend.SampleData.SampleDataSource.Item);
            if (((CheckBox)sender).IsChecked == true)
            {
                this.listbox.SelectedItems.Add(checkedItem);
            }
            else
            {
                this.listbox.SelectedItems.Remove(checkedItem);
            }
        }

Nun hat der User allerdings auch die Möglichkeit ein Item zu selektieren, ohne dabei die Checkbox zu betätigen.

Deshalb wollte ich im ListBox_SelectionChanged-Event auf das entsprechende Item zugreifen um die "IsChecked"-Eigenschaft der Combobox zu setzen. Und genau hier liegt mein Problem:

Wie kann ich genannten Event auf die Objekte des aktuell selektieren Items zugreifen und diese ändern?

Evtl. ist diese Lösung so auch gar nicht praktikabel? Vielleicht geht das auch einfacher?
Ich brauche einfach eine Liste mit einer Checkbox-Mehrfachauswahl, auf dessen selektierte Items reagiert werden kann.

20.07.2009 - 16:21 Uhr

Hallo,

ich beschäftige mich derzeit mit Silverlight. Für ein Projekt benötige ich einen komfortablen HTML-Editor. Ich besitze zwar bereits einen, allerdings nur für ASP.Net. Für Silverlight habe ich leider keinen Vergleichbaren gefunden.

Meine Webseite soll komplett in Silverlight erstellt sein. Allerdings möchte ich beim Klick auf einen Tabreiter in meiner Silverlight-Applikation in meiner ASP.Net-Applikation ein Event ausführen, um den oben genannten HTML-Editor anzeigen zu können.

Ist sowas möglich? Also kann ich aus meiner Silverlight-Applikation auf die ASP.Net-Seite zugreifen, die die Silverlight-Applikation geladen hat?
Wenn ja: Wie?

Vielen Dank schonmal für jede Antwort

17.12.2003 - 20:41 Uhr

Richtig, und das mit ner e-mail über smtp zu verschicken ist mit System.Web.Mail echt kein problem... (ausser wenn man sich authentifieren muss)

Danke mal für den Link

17.12.2003 - 10:29 Uhr

Hat jemand / Kennt jemand ein Beispiel zur Pop3 Abfrage? (Jeglicher Codeschnipsel ist hilfreich)

Und wenn möglich auch noch wie ich auf den Anhang zurückgreifen kann um ihn Beispielsweise auf die Festplatte zu speichern...

Danke im Voraus

09.12.2003 - 15:43 Uhr

Wie funktioniert das? Glaub mir der direkten Kompilierung über die csc.exe würde ich das hinbekommen, geht das aber auch mit SharpDevelop?

08.12.2003 - 22:21 Uhr

Hi Leute,

programmiere seid gestern c# 🙂

So und nen erstes Problem hab ich bereits... Wenn ich versuche eine DLL einzubinden (z.B. user32.dll) klappt das wunderbar...

Meine eigene DLL klappt zwar auch von einbinden nur kann ich dann keine meiner Funktionen aufrufen... ich bekomme immer den Fehler:

Der Einstiegspunkt "LadeDaten" wurde in der DLL Test.dll nicht gefunden.

Folgenden Code hab ich:

In dem Programm das die DLL aufruft:

// project created on 08.12.2003 at 19:04
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace MyFormProject 
{		
	class MainForm : System.Windows.Forms.Form
	{
		private System.Windows.Forms.Button button;
		public MainForm()
		{
			InitializeComponent();
		}
	
		// THIS METHOD IS MAINTAINED BY THE FORM DESIGNER
		// DO NOT EDIT IT MANUALLY! YOUR CHANGES ARE LIKELY TO BE LOST
		void InitializeComponent() {
			this.button = new System.Windows.Forms.Button();
			this.SuspendLayout();
			// 
			// button
			// 
			this.button.Location = new System.Drawing.Point(104, 128);
			this.button.Name = "button";
			this.button.TabIndex = 0;
			this.button.Text = "button";
			this.button.Click += new System.EventHandler(this.ButtonClick);
			// 
			// MainForm
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(292, 273);
			this.Controls.Add(this.button);
			this.Name = "MainForm";
			this.Text = "This is my form";
			this.ResumeLayout(false);
		}
			
		[STAThread]
		public static void Main(string[] args)
		{
			Application.Run(new MainForm());			
		}
// hier
		[DllImport("Test.dll")]
		public static extern int LadeDaten(int I);	

		void ButtonClick(object sender, System.EventArgs e)
		{	
			LadeDaten(10);
		}	
	}			
}

In der Datei der DLL:


using System;

public class Test
{
	public static int LadeDaten(int I)
	{
		return(10);
	}
}

Kann mir da einer weiterhelfen?

Danke