|
in the following XAML:
<UserControl x:Class="NextImage2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot">
<Grid.Background>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
<Image Name="image1" Stretch="Fill" Source="file:///C:/Program Files (x86)/Telerik/RadControls for Silverlight Q2 2011/Demos/Examples/Slider/Images/Slider/Image1.PNG" Margin="49,29,0,0" HorizontalAlignment="Left" Width="304" Height="245" VerticalAlignment="Top" />
</Grid>
</UserControl>
the image is displayed in design mode, but is not displayed in runtime, neither in browser nor out of browser.
why it may be?
P.S. replace the face with colon d!
|
|
|
|
|
i found that i didn't add the image to my project. it's just an image which exists somewhere in my HDD.
but, the matter is that i don't want to put a static image there.
consider a program which is written and doesn't intend to know what is the image. by clicking on the default image a file open dialog must be opened from which user may select the image he/she wants to be shown in the Image control.
also consider a case in which the image must be made dynamically. maybe something like a simple MSPaint. user may just draw lines or put points. it's enough that the image not to be static anymore.
what can i do in such cases?
thx
|
|
|
|
|
One of the things to remember when running your application is that it has to respect the permission sets applied, so the fact that you are attempting to read the image from a folder that you will not normally have the permissions to get to is going to cause you a problem.
If your application needs to be able to display an image chosen by the user, a simple way to do this is to read the picture in programatically and display that.
|
|
|
|
|
In my ResourceDictionary I have this
<Style x:Key="BaseControlStyle"
TargetType="UserControl">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style x:Key="CheckBoxStyle"
TargetType="CheckBox"
BasedOn="{StaticResource BaseControlStyle}">
</Style>
The CheckBox is not being vertically centered. If I move the VerticalAlignment setter into the CheckBox style, then it works. Anyone know what I'm doing wrong?
Everything makes sense in someone's mind
|
|
|
|
|
I am building a WPF app. There will be"tiles" that will contain an image and some text. The user wants to drag these tiles onto the window/work area. What's the best design approach for this? Each type of tile will have its owns et of properties. I can use a dialog for that. I will proably use a canvas as the design area.
But what's the right way to do the tiles? There will be s distinct set of tiles that I create at design time. Should I make them user controls and allow the user to drag them on? I could create them as images and use an enum to determine the type the user is gradding.
I'v never done something like this before, so I'm open to suggestion.
Thanks
Everything makes sense in someone's mind
modified 15-Feb-12 20:59pm.
|
|
|
|
|
If I needed to do something like that, I would probably steal code from one of these places and modify / clean it up:
WPF Diagram Designer - Part 4[^]
Dragging Elements in a Canvas[^]
As for the properties, I wouldn't use a dialog for that. I'd use a property grid. Not as nice, but I wouldn't want to spend the rest of life adding / removing / editing those dialogs when the property grid can do it automatically.
|
|
|
|
|
That's exactly what I'm looking for.
Thanks!
Everything makes sense in someone's mind
|
|
|
|
|
I'm not totally sure how to ask this question, so bear with me...
I have a data template for a list of ProjectEntities displayed in a ListBox. A ProjectEntity has ProjectName and ProjectType properties, both string.
So far, my data template contains a hyperlink for the ProjectName and a combobox populated with a list of ProjectType. I have the combobox itemsource set in the template, it it's populating fine.
But how do I set the combo box selected item on the selected listbox item? In other words, on each instance of a ProjectEntity, I need to know what combobox value was selected.
Here's my XAML so far:
<DataTemplate DataType="{x:Type entities:ProjectEntity}">
<StackPanel Orientation="Horizontal"
Margin="2">
<Image Source="/Falcon.WPF;component/Media/Images/project_256.png"
Height="16"
Width="16"
Margin="0,0,2,0"/>
<TextBlock Margin="2,0,0,0"
Width="200">
<Hyperlink NavigateUri="{Binding ProjectName}"
Foreground="RoyalBlue"
Command="{Binding Path=DataContext.SelectedProjectCommand,
RelativeSource={RelativeSource FindAncestor, AncestorType={ x:Type views:ClientListView}}}"
CommandParameter="{Binding}">
<InlineUIContainer>
<TextBlock Text="{Binding ProjectName}" />
</InlineUIContainer>
<Hyperlink.Style>
<Style TargetType="Hyperlink">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="TextDecorations" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
</Hyperlink.Style>
</Hyperlink>
</TextBlock>
<ComboBox ItemsSource="{Binding Path=DataContext.ProjectTypes,
RelativeSource={RelativeSource FindAncestor, AncestorType={ x:Type views:ClientListView}}}"
Width="100"/>
</StackPanel>
</DataTemplate>
Everything makes sense in someone's mind
|
|
|
|
|
Wouldn't you just have a ProjectType obejct in your ProjectEntity and bind that to the ComboBox SelectedItem in two-way mode?
|
|
|
|
|
Ok, I have this
<ComboBox ItemsSource="{Binding Path=DataContext.ProjectTypes,
RelativeSource={RelativeSource FindAncestor, AncestorType={ x:Type views:ClientListView}}}"
SelectedItem="{Binding Path=DataContext.SelectedProjectType,
RelativeSource={RelativeSource FindAncestor, AncestorType={ x:Type views:ClientListView}}, Mode=TwoWay}"/>
The property in the VM is being set, but it seems like I would need some logic somewhere to know which ProjectEntity the user was changing.
Can you elaborate a bit?
Thanks
Everything makes sense in someone's mind
|
|
|
|
|
Doesn't each item in your ListBox have a ComboBox? That's what it looks like from your XAML. So each item in the ListBox would need to have a SelectedProjectType and you would bind to the item one, not the view one.
|
|
|
|
|
I'm giving a try to VisualState in my template for a WP7 app.
I have an ExpanderView and I'd like to have a little arrow in the header showing the state (expanded or not) and rotate it smootly from up to down when IsExpanded change value.
I have an attached property WpfUtils.VState which call VisualStateManager.GoToState(target) when a binded value change.
1st problem it should target a Control but I'm trying to update an Image ...
I "worked around it" (hopefully, doesn't work anyway) by templating the container object.
2nd problem, it's just not working!
Here is my XAMl, any idea?
<toolkit:ExpanderView
x:Name="eview"
gwpf:WpfUtils.VState="{Binding IsExpanded, Converter={StaticResource ccvt}, RelativeSource={RelativeSource Self}}"
>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="MyStates">
<VisualState x:Name="MyCollapsedState"/>
<VisualState x:Name="MyExpandedState">
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Header.RenderTransform.Angle"
Duration="0:0:0.5" From="-90" To="90"/>
<!--
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<toolkit:ExpanderView.Header>
<StackPanel Orientation="Horizontal">
<Image Width="36" locv:ThemedImage.Path="appbar.next.rest.png" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<RotateTransform x:Name="ArrowExpandT" Angle="-90"/>
</Image.RenderTransform>
</Image>
<TextBlock
Text="{Binding Local.NewItem, Source={StaticResource strings}}"
FontSize="{StaticResource PhoneFontSizeLarge}"
VerticalAlignment="Center" Margin="8"/>
</StackPanel>
</toolkit:ExpanderView.Header>
<StackPanel Orientation="Vertical">
<locv:ItemView x:Name="NewItemUI" />
<!--
<Button
VerticalAlignment="Bottom" HorizontalAlignment="Right"
Content="{Binding Local.Add, Source={StaticResource strings}}"
Click="DoAddItem"/>
</StackPanel>
</toolkit:ExpanderView>
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station....
_________________________________________________________
My programs never have bugs, they just develop random features.
|
|
|
|
|
Hi,
I have a silver light application. I have some master data in database which is using extensivly on application especially when i print crystal reports. So i decided to store data on Server( through session etc) or on client to avoid database trips. I want to ask which is best option from perfomance point of view
Option 1: Store all data on server( through session or application variables etc) and get data from server when needed for example while printing reports( I am using Crystal Reports12)
Option2: Store all data on client ( e.g create a collection in silverlight on client and store all currencies in that collection) and when i want to print report and want to use that data pass this data( currency collection) to server along with other data( other arguments needed on server) through WCF services ( I am using WCF Services)
Thanks
|
|
|
|
|
You should also look at the Isolated Storage option.
Here, you can store some amount of data (so long as it is not too large) and make it persist for some time (unless the client clears this storage area).
|
|
|
|
|
Thank you for suggestion. I want to get/transfer this data from database when user login and clears out when he log off ( As data may be change any time). Should i still consider Isolated storage option? and second thing storing data in Isolated storage means transfer data on client is good option . Am i right?
Thank you & Best regards
|
|
|
|
|
If the data is liable to change during the use of the application then you shouldn't really consider storing it in isolated storage. Take, for instance, stock prices - these change rapidly, so the data for this should be retrieved from elsewhere (e.g. a web service, or database if you are the one controlling the stock prices). If the setting is something like a user preference, then it does make sense to store this locally, but with it synchronised back to the server when the user updates it.
|
|
|
|
|
Thanks you for your suggestion.
Data can be changed but not so frequently. You can say that when user login then if we have fetched data from database then its ok until he logg off( if data is changed between user login and log out then no need to update/syncronize). I shall use this data on different crystal reports which will print from server. so what i am thinking instead of fetching this data from database i shall use this from session (stored in any sevrver object) but other option may be tranfer all data to client machine and send back to server when it is needed to print on crystal report or wherever used on server( to decrease load on server). Which option will be best Either to store data on server or on client
|
|
|
|
|
Think about it this way. If you store the data on the client and you have lots and lots of clients, then that's a lot of traffic you're going to be sending out, just to send it back to the server when you need to print the report. Is this acceptable to you, in terms of performance.
Please note that there is no right answer that we can give you, it's going to depend entirely on your requirements, system architecture and so on.
Saying that, if it were me, I wouldn't be transferring it backwards and forwards.
|
|
|
|
|
Anyone have an example of how to handle events using MVVM? Specifically, I'd like an event defined in XAML to be handled in the ViewModel.
Everything makes sense in someone's mind
|
|
|
|
|
1) download the Blend SDK (you only need System.Windows.Interactivity.dll)
2) steal an EventToCommand mapper (such as the one in MVVMLight or Cinch for example)
3) in XAML, add the namespace:
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
4) on the owning object you would do something like:
<ListView>
<i:Interaction.Triggers>
<i:EventTrigger EventName="ItemContextMenuOpening">
<local:EventToCommand Command="{Binding ItemContextMenuOpeningCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ListView>
|
|
|
|
|
Ok, can you further explain what you mean by "EventToCommand mapper". I have MVVMLight, but I don't know what an EventToCommand mapper is.
Everything makes sense in someone's mind
|
|
|
|
|
Ok, I got most of it, but I still have something wrong.
My XAML:
<Window x:Class="Events.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:entities="clr-namespace:Events"
xmlns:g="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type entities:Customer}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding CustomerName}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Customers}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="ListBoxItem.MouseDoubleClick">
<g:EventToCommand Command="{Binding DoubleClickCommand}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBox>
</Grid>
</Window>
and my code behind
using System.Collections.ObjectModel;
using System.Windows.Input;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
namespace Events
{
public class MainWindowViewModel : ViewModelBase
{
private ObservableCollection<Customer> _Customers = new ObservableCollection<Customer>();
public ObservableCollection<Customer> Customers
{
get { return _Customers; }
set
{
if (_Customers != value)
{
_Customers = value;
RaisePropertyChanged("Customers");
}
}
}
private ICommand _DoubleClickCommand;
public ICommand DoubleClickCommand
{
get
{
if (_DoubleClickCommand == null)
{
_DoubleClickCommand = new RelayCommand(doubleClicked);
}
return _DoubleClickCommand;
}
}
public MainWindowViewModel()
{
Customers.Add(new Customer { Id = 0, CustomerName = "Jack Smith"});
Customers.Add(new Customer { Id = 1, CustomerName = "Pete Jones" });
Customers.Add(new Customer { Id = 2, CustomerName = "William Jackson" });
}
private void doubleClicked()
{
}
}
}
The doubleClicked() method is never called.
What am I missing???
Everything makes sense in someone's mind
|
|
|
|
|
Kevin Marois wrote: <i:EventTrigger EventName="ListBoxItem.MouseDoubleClick">
You can't do nested events like that. You can do "MouseDoubleClick" which is going to be the ListBox one. If you want to map to the ListBoxItem one, you have to define a style that targets the ListBoxItem and put it in there.
modified 14-Feb-12 18:03pm.
|
|
|
|
|
That did it.
With the "PassEventArgsToCommand" can't I pass along the Id of the customer I double clicked? if so, how so that done?
I think what I'm missing the code behind. I can't seem to figure it out.
Everything makes sense in someone's mind
|
|
|
|
|
The PassEventArgsToCommand="true" is going to pass the EventArgs object to your command. So you would use RelayCommand<T> where T is the type of event args thrown up by that event. In your case, sender is going to be the ListBoxItem.
|
|
|
|