Ho is it possible to define the grouing in XAML without using Templates?
I like to define my GridViewItems inside the GridView like:
<GridView>
<GroupItem>
<GridViewItem/>
<GridViewItem/>
<GridViewItem/>
</GroupItem>
<GridView>
But that seems to be not possible.
My GridViewItems are not sized all the same, so I like to get a flowing layout instead of manually putting everything in StackPanels :)
Oh man, I wish. I've wanted since I first saw grouping.
You have to use a CollectionViewSource w/code behind. Sorry about that.
Great minds, though. ;)
Best of luck!
Related
I need help with a change of perspective.
I got stuck trying to approach UWP in a way I used to do in WPF regarding a MVVM pattern for managing UserControls dynamically.
I naturally tried to perform the same pattern in UWP but got stuck on various things like UWP not supporting 'x:Type' ...
Situation is; time to rethink this approach and look for a new direction. Seems I'm forced to abandon to use implicit binding in a similar fashion to the WPF pattern, using the Content property of a ContentPresenter and a VM property 'of type Object', which maintain a selected ViewModel. It was a simple and clean approach for matching up the correct View automagically with the VM set in ActiveViewModel.
the below was such a simple way of managing many views all over the place, odd MS not fixing this? But, back to the big Q: what now in UWP!?
<ContentPresenter Content="{Binding ActiveViewModel}">
<ContentPresenter.Resources>
<DataTemplate DataType="{x:Type local:OneViewModel}">
<local:OneView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:TwoViewModel}">
<local:TwoView />
</DataTemplate>
</ContentPresenter.Resources>
</ContentPresenter>
What Shall I do instead of this!? Anyone found a new efficient way of doing it? I got stuck in my stubborn mind and need someone to kick my butt so I go forward. Getting to old to change, but due to this profession it seems I constantly have to. :)
Looking at the DataTemplate documentation, there's a paragraph explaining the situation which you are trying to figure out.
For advanced data binding scenarios, you might want to have properties
of the data determine which template should produce their UI
representations. For this scenario, you can use a DataTemplateSelector
and set properties such as ItemTemplateSelector to assign it to a data
view. A DataTemplateSelector is a logic class you write yourself,
which has a method that returns exactly one DataTemplate to the
binding engine based on your own logic interacting with your data. For
more info, see Data binding in depth.
Here, you have an example on how you can select distinct DataTemplate for items in a control such as a ListView based on defined conditions.
Your situation is a bit different from the one described above, but the solution should be within what is explained above.
Create a class which derives from DataTemplateSelector, and override the SelectTemplateCore methods exposed by it, where you define the logic of what DataTemplate should be selected for the specific presented object.
This Derived class should expose properties of type DataTemplate, which identify each single DataTemplate template object, you pretend to be able to choose from.
Just as in the example, you are probably better of by defining the DataTemplate resources on an higher level object, such as the Page itself.
Instantiate your DataTemplateSelector Derived class in XAML as a resource and set each of the properties exposed above of type DataTemplate to the analogous DataTemplate static resource.
Utilize the ContentTemplateSelector dependency property, by setting it your custom DataTemplateSelector.
With this logic, it should be possible to have your ContentPresenter decide correctly between which DataTemplate it should choose from, based on your required UI logic.
I am using Template10 with the Hamburger starting project template. I'd like to have a margin between the hamburger area on the left and all content. I tried changing the shared Shell.xaml page (by adding a margin, etc.) but couldn't figure out the best way to sort it out. Conceptually, that makes sense, but it's the specific detail of how to make it work that I'm missing.
Is there an easy way to do it without changing each content page?
Regarding the questions in the comments: I want it in the closed case of a wide view; the question doesn't make any sense in any other case. As far as what I tried, it doesn't really ultimately matter, since none of what I tried worked - I'm asking what the right way is to do it, which I never figured out.
Here's what the default looks like, without a margin:
Here's what it looks like with a margin added to the content area, which is also how the sample template contents handle this:
I don't want to have to mark up every content page with left margins to get the offset in the second picture.
1: https://i.stack.imgur.com/jUIuO.png
Okay, now I have enough information. You have a few options here. The first is just bite the bullet like the rest of the developer community and format your pages like normal. But if you simply must, you can create an implicit Page style with a setter setting Margin="16,16,16,16" but, listen, and I am not kidding, you will ultimately regret it unless your app is super-simple. The biggest problem will be the spacing will be OUTSIDE the containing ScrollViewer.
Thanks for using Template 10.
I can not display a ContentDialog without Borders. If I set BorderBrush="Transparent" or BorderThickness="0 0 0 0" the Borders remain.
Is there any way to get rid of them?
When ContentDialog displays, the properties of BorderBrush and BorderThickness are invisible. To create a border you need to specify custom content that has a border. This post can be helpful.
Besides, there are several other ways to do so:
1) As blueeyes said: You can take some trouble to modify the default ControlTemplate. Here you can find explanations of ContentDialog's style and template
2) You can create an customized user dialog derived from ContentDialog, where you can define your own style. MSDN has a simple example.
Maybe you can work with the ControlTemplateof it there you can change the whole style of it but I warn you just edit a copy of it and it will be a lot of work to do.
Hope my answer helps you :)
There is a tricks which works for me : when you define your ContentDialog (maybe in the code behind), you can override this resource :
Application.Current.Resources["ContentDialogBorderWidth"] = new Thickness(0);
I fund this resource on the style page of ContentDialog of Microsoft here
I am trying to make a custom listview with his items bigger, with an image in the background and a text over it.
I'm trying to use the Kiva example on the docs, but I cannot understand nothing about how is doing that.
Someone could help me understand how to make that? or ar approach to do?
If you want to use sencha-touch 2.0, I think Sencha-touch2.0 guide helps you.
Of course if you want to edit style, you must change via css or template of listview (via listview's tpl attribute).
I have implemented the getAdditionalData in ExtJS's grid.panel.
I have it showing the extra information but I want to style the extra row. Basically make the font smaller, etc.
Other than wrapping my data in span tags, is there another way to alter the style for those rows?
Thanks.
I found the answer. It was just easier to use a custom renderer.