我有一个视图数据绑定通过mvvm光到我的WP7项目中的视图模型.该视图包含一个包含以下设置的列表框:
<ListBox x:Name="StationList"
ItemsSource="{Binding StationList}"
SelectedItem="{Binding SelectedStation, Mode=TwoWay}"
>
Run Code Online (Sandbox Code Playgroud)
StationList是一个ObservableCollection.
现在当视图加载时,一切看起来都很棒!显示列表,未选择任何项目!
但是,当我将XAML更改为:
<ListBox x:Name="StationList"
ItemsSource="{Binding Source={StaticResource StationListSorted}}"
SelectedItem="{Binding SelectedStation, Mode=TwoWay}"
>
Run Code Online (Sandbox Code Playgroud)
使用StationListSorted作为CollectionViewSource在StationList上进行简单的一个属性排序.现在事情变得丑陋!相同的视图在列表框中加载了相同的项目,但现在正确排序,但是选择了第一个项目并设置了selectedItem属性!
如何使用CollectionViewSource对ListBox进行排序而不自动选择我的第一个项目?
我有一个 Xamarin Forms ContentView,其 UI 在 XAML 中定义。当使用某个自定义渲染器时,应动态添加此视图到应用程序的根视图。
对于 iOS,这工作得很好,但在 Android 上,我没有得到像 XAML 中定义的正确的 UI。只是得到 1 个大矩形,没有其他东西。
iOS 中使用的代码
public static UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size)
{
var renderer = Platform.CreateRenderer(view);
renderer.NativeView.Frame = size;
renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
renderer.NativeView.ContentMode = UIViewContentMode.ScaleToFill;
renderer.Element.Layout(size.ToRectangle());
var nativeView = renderer.NativeView;
nativeView.SetNeedsLayout();
return nativeView;
}
Run Code Online (Sandbox Code Playgroud)
然后在自定义渲染器中
var rect = new CGRect(0, 0, 250, 55);
_overlayTabView = Helpers.ConvertFormsToNative(new OverlayTabView(), rect);
var result = UIScreen.MainScreen.Bounds;
var x = (result.Width / 2) - 125;
var y = (result.Height …Run Code Online (Sandbox Code Playgroud) 我对Windows Phone 8模拟器有一个奇怪的问题!我有一个小测试应用程序,我在主页上更改"页面名称"文本框,以便使用自定义字体显示.现在在视觉工作室设计师中我看到了这种字体,在运行应用程序时我也在模拟器中看到它,所以一切都很好......
但是,当我将主页面移动到名为View的文件夹并更改WMAppManifest.xml以反映此移动时>导航页面现在设置为View/MainPage.xaml.我仍然在我的设计师中看到这种自定义字体,但在模拟器中不再!
我还没有拥有wp8设备...所以任何人都可以为我验证这一点,如果你尝试将故障项目部署到手机时这个问题是一样的吗?
有没有人知道为什么会这样?非常讨厌无法在模拟器中看到正确的设计.
那么......有什么好主意我们如何在Win RT-phone中的Grouped ListView的GroupHeader模板上启用水平内容拉伸?
我全都耳朵!
我添加了一个演示应用程序,您可以尝试一下 - 请在发布答案之前做好!代码可以在这里找到https://github.com/Depechie/ListView-HorizontalStretch-RT81
我添加了2页,MainPage有没有水平拉伸的问题.MainPage2有一个修复水平拉伸,但由于该修复,JumpList(缩小视图)不再工作.您可以通过appbar按钮从MainPage导航到MainPage2.
这里有2个视觉效果

**
找到解决方案
由于这是一个瓷砖,因此图像总是会被173扩展到173!
为了避免这种情况,首先用173创建一个虚拟173,并将其与调整大小的一个合并!
Rect rect = new Rect(0.0, 0.0, width, height);
WriteableBitmap bitmapDummy = new WriteableBitmap(173, 173);
bitmapDummy.Blit(rect, resized, rect, WriteableBitmapExtensions.BlendMode.None);
Run Code Online (Sandbox Code Playgroud)
**
我已经创建了一个后台代理来更新我的WP7应用程序的实时磁贴.但无论我试图调整大小,我都没有取得好成绩!
有小费吗?目前我有以下代码,但我也试过135乘173和其他插值.
WriteableBitmap writeableBitmap = new WriteableBitmap(bitmapImage);
var resized = writeableBitmap.Resize(173, 173, System.Windows.Media.Imaging.WriteableBitmapExtensions.Interpolation.Bilinear);
Run Code Online (Sandbox Code Playgroud)
下面还添加了一个小矩形来显示应用程序的标题!它的高度为40像素,如果将图像裁剪在上面会很棒.实际图像总是250 x 321px


我在我的Xamarin Forms项目中使用Xamarin实验室,它有一个类,您可以使用它来请求有关应用程序所在的运行设备的信息.
在我的情况下,我想知道设备屏幕的当前宽度.为此,您需要IDisplay在iOS appdelegate中连接接口,以便在表单代码中使用它.
所以在我的表单代码中,我通过请求Resolver.Resolve<IDevice>.Display.Width或获得宽度Resolver.Resolve<IDevice>.Display.XDpi
现在,当在iPhone 6模拟器上运行时,我的宽度为750,XDpi为326.我现在要做的是使用这两个值中的一个来调整屏幕上的图像大小,以便它们具有屏幕的确切宽度.
var image = new Image (){ Source = "img1.jpg", WidthRequest = _display.Width });
Run Code Online (Sandbox Code Playgroud)
我在里面展示它们 ExtendedScrollView
<StackLayout>
<controlsXLabs:ExtendedScrollView x:Name="ImageScrollView"
Orientation="Horizontal"
AnimateScroll="true"
Scrolled="OnScrolled">
<StackLayout x:Name="DiscoverImagesStackLayout" Orientation="Horizontal" />
</controlsXLabs:ExtendedScrollView>
<Button Text="Click me" Clicked="OnButtonClicked" />
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
但我现在面临的问题是使用宽度(750)是大(视网膜缩放?)和使用XDpi是小!
换句话说,如何获得可用于匹配图像宽度的实际屏幕宽度?或者我做错了什么?
添加了截图,第一个是大,第二个是小(参考屏幕大小)
好的......我不明白.我刚刚在web.config中使用以下代码块保护了我的asp.net mvc 3应用程序(razor视图).
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,Login页面不再具有正常的样式......它只是简单的HTML而没有任何css样机.那么我需要在web.config中"允许"什么?
我设法通过MVVM运行LongListSelector.换句话说,ItemSource是通过我的viewmodel上的属性设置的.
但是出于一些奇怪的原因,我似乎无法"绑定"LongListSelector的SelectedItem ......我没有进入ViewModel属性的Set和Get.这是怎么做到的?那么ViewModel上SelectedItem的'type'应该是什么?我认为集团内部的班级类型?
我目前的xaml:
<silverlighttoolkit:LongListSelector x:Name="AlbumsList"
Background="Transparent"
ItemTemplate="{StaticResource ItemTemplate}"
GroupHeaderTemplate="{StaticResource GroupHeaderTemplate}"
GroupItemTemplate="{StaticResource GroupItemTemplate}"
ItemsSource="{Binding GroupedAlbums}"
SelectedItem="{Binding SelectedAlbum, Mode=TwoWay}">
<silverlighttoolkit:LongListSelector.GroupItemsPanel>
<ItemsPanelTemplate>
<silverlighttoolkit:WrapPanel />
</ItemsPanelTemplate>
</silverlighttoolkit:LongListSelector.GroupItemsPanel>
</silverlighttoolkit:LongListSelector>
Run Code Online (Sandbox Code Playgroud) silverlight-toolkit windows-phone-7 mvvm-light longlistselector