我遇到了一些问题,创建了一个非常类似于相机应用程序中的照片条的效果.
我想要做的就是显示一行网格,每个网格都有与屏幕相同的尺寸(无论是纵向还是横向).我必须做一些hacky并创建依赖属性,网格宽度和高度属性绑定到这些属性以保持宽高比.
这很好用.但是当我为我的条带创建一个StackPanel并实现我的导航(或者只是使用z-index变换缩放)时,我发现我的StackPanel不能显示大于屏幕尺寸(它被裁剪为只有一个网格的大小) .我以为我找到了一篇描述这个问题的帖子,但我现在找不到了 - 如果您知道我正在考虑哪个帖子,或者您对此限制有更多了解,请发帖.
我发现的唯一解决方法是使用ScrollViewer,这绝对不是我想要的行为,但它允许StackPanel比屏幕宽.
我真正的问题是ScrollViewer的行为 - 因为我需要从网格跳到网格(就像照片条那样)而不是自由滚动,据我所知,HorizontalOffset不是一个可动画的属性.我可以通过每15毫秒调用ScrollToHorizontalOffset强制它动画,基本上手动实现我自己的缓动效果.这看起来像是一个巨大的黑客,而且行为非常微不足道(要么我每次都没有得到ManipulationCompleted事件 - 在每次滑动操作结束时 - 或者ScrollViewer的内置惯性物理干扰我的效果).
有没有人知道我遇到的问题的更好的解决方法,或者在Silverlight中获得相机照片条的体验的完全不同的方式?
我考虑过使用Pivot控件,但它并不是我想要的(如果我希望每个项目在下一个项目进入之前完全动画化,而不是看起来全部附加到一个条带上,那么应该有更少的约束实现这一目标的方法).更重要的是,条带只是我希望能够动态执行的众多效果之一.我想交替使用类似CoolIris的3D倾斜或FlipPad风格的翻页.我相信如果我能够很好地使我当前的设置工作,那么很容易实现这些其他效果(作为可变转换).致力于像Pivot这样的控制不会让我更接近这个愿景.
这是我的XAML:
<Grid x:Name="LayoutRoot" Background="Transparent" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" HorizontalAlignment="Left" VerticalAlignment="Top">
<ScrollViewer x:Name="SlideScroller" VerticalScrollBarVisibility="Disabled" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Margin="0,0,0,-31" ScrollViewer.HorizontalScrollBarVisibility="Auto" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel x:Name="SlidePanel" Orientation="Horizontal" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" VerticalAlignment="Top" HorizontalAlignment="Left">
<Grid x:Name="Slide0" Margin="0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" Background="#FFCCCCCC">
<Image x:Name="Photo0" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" Height="{Binding RealHeight, ElementName=phoneApplicationPage}" VerticalAlignment="Top" HorizontalAlignment="Left" Stretch="UniformToFill"/>
</Grid>
<Grid x:Name="Slide1" Margin="0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="{Binding RealWidth, ElementName=phoneApplicationPage}" …Run Code Online (Sandbox Code Playgroud) 这个错误似乎抛出了调用的javascript函数中出现的任何错误:
SystemException was unhandled
An unknown error has occurred. Error: 80020101.
Run Code Online (Sandbox Code Playgroud)
我使用javascript作为web-app后端的接口,我有两个调用工作正常,从ajax调用加载和返回JSON,如下所示:
在Silverlight中:
MyBrowser.InvokeScript("getData", "/Me/Feed?numberOfResults=-1", "MyFeed");
Run Code Online (Sandbox Code Playgroud)
Javascript加载到WebBrowser中
function getData(url, context) {
$.ajax({
url: url,
dataType: 'jsonp',
success: function (result) {
callback(result, context);
}
});
}
Run Code Online (Sandbox Code Playgroud)
但后来我想将数据发回服务器,我也在做同样的事情:
MyBrowser.InvokeScript("postData", "thedata", "CreatePost");
function postData(payload, context) {
$.ajax({
type: "POST",
url: "/Post/Create?" + tz(),
data: payload,
dataType:"json",
success:function (result) {
callback(result, context);
}
});
}
Run Code Online (Sandbox Code Playgroud)
现在我得到了例外.
真正奇怪的是,我可以立即从脚本中调用该函数,并将其发布到后端就好了.
postData("sampledata", "PostTest");
Run Code Online (Sandbox Code Playgroud)
起初,似乎唯一的区别是一个是GET而另一个是POST,所以我将GET ajax调用复制到第二个调用(这发生在用户输入,第一个发生在加载时).结果是一样的(我得到了同样的错误).只要它们不包含ajax调用(它出现),我就可以从这个事件的javascript中获取其他命令.所以你可能会认为这是一个时间问题 - 所以我把调用移到了上面我调用其他正在工作的InvokeScripts的地方,它仍然不起作用(同样的例外).
我也试过在一个单独的线程上调用它,使用Dispatcher.BeginInvoke进行测量,没有骰子.
Dispatcher.BeginInvoke(() =>
{
MyBrowser.InvokeScript("postData", "thedata", "CreatePost");
});
Run Code Online (Sandbox Code Playgroud)
我完全不知所措.似乎有一些一致性,因为如果呼叫失败,它每次都会失败,但我不知道有效的呼叫和失败的呼叫之间有什么区别.
任何人都可以告诉我我做错了什么,或者我不明白一起使用InvokeScript和Ajax?
谢谢! …
我希望白色箭头出现在我的文本输入框中,这样用户可以通过远离键盘或使用硬件后退按钮进行前进.
搜索字段在系统UI中执行此操作.我如何能?
这是我的代码XAML:
<TextBox x:Name="InputBox" InputScope="Text" AcceptsReturn="True" TextChanged="InputBox_TextChanged"/>
Run Code Online (Sandbox Code Playgroud)
CS:
void InputBox_TextChanged(object sender, KeyEventArgs e)
{
// e does not have Key property for capturing enter - ??
}
Run Code Online (Sandbox Code Playgroud)
一个快速说明,我也尝试过将AcceptsReturn视为False.
我基于Alexa Skills Kit中提供的示例之一创建了我的Alexa Skill作为AWS Lambda Node.js应用程序.我按照所有说明操作:
当我这样做时,她回答说"与所请求的应用程序进行通信时出现问题." 在Echo应用程序中它说:
意外通信问题HelloWorld请求标识符:amzn1.echo-api.request.e2d17280-592a-474f-a6b1-d1a9d8ff816d与请求的应用程序通信时出现问题
我可以从我的AWS Lambda函数列表中看到没有请求到达服务.我重新启动了Echo.我给了它一个小时,以防它需要时间在某处传播,但它仍然给出相同的响应.
所以这是一个非常模糊的死胡同.有没有人碰到这个?任何想法尝试什么?
我正在这里完成这个 SwiftUI 教程:https : //developer.apple.com/tutorials/swiftui/handling-user-input
在“在您的视图中采用模型对象”部分的第 3 步中,我在第 16 行的 Toggle 语句中收到此错误:“无法推断通用参数‘标签’。”
我的代码与教程中提供的代码相同:
import SwiftUI
struct LandmarkList: View {
@EnvironmentObject var userData: UserData
var body: some View {
NavigationView {
List {
Toggle(isOn: $userData.showFavoritesOnly) {
Text("Favorites Only")
}
ForEach(userData.landmarkData) { landmark in
if !self.userData.showFavoritesOnly || landmark.isFavorite {
NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
LandmarkRow(landmark: landmark)
}
}
}
}
.navigationBarTitle(Text("Landmarks"))
}
}
}
struct LandmarkList_Previews: PreviewProvider {
static var previews: some View {
ForEach(["iPhone SE", "iPhone XS Max"], id: \.self) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试添加一个注销功能,该功能在ApplicationBarMenuItem的click事件中调用,遵循此博客上的说明
这就是我的代码:
var oauth = new FacebookOAuthClient();
var logoutParameters = new Dictionary<string, object>
{
{ "next", "http://www.facebook.com" }
};
var logoutUrl = oauth.GetLogoutUrl(logoutParameters);
LayoutRoot.Children.Add(FacebookLoginBrowser);
FacebookLoginBrowser.Navigate(new Uri(logoutUrl.AbsoluteUri, UriKind.Absolute));
Run Code Online (Sandbox Code Playgroud)
我期望这段代码会在Navigated事件完成时将用户从Facebook注销,然后显示参数中传递的任何URL(在本例中为facebook.com).然而,我所看到的是它总是加载" http://m.facebook.com/ ",无论传入什么,它都不会注销Facebook.我不关心它加载后的内容(这会很棒,但此时我只是希望它执行注销操作,以便用户可以在他们再次启动我的应用程序时退出并登录).我能成功注销用户的唯一方法是,如果他们了解页面何时加载,他们需要向下滚动,放大,并在页面底部手动点击"注销" - 这不是一个可接受的用户体验.
我还从该博客下载了示例代码,它大致相同.
我已经看过这个帖子,这个帖子和使用的URL非常接近oath.GetLogoutUrl(logoutParameters)返回的内容,但我尝试构造具有相同结果的确切URL:
var logoutUrl = new Uri("https://www.facebook.com/logout.php?next=http://www.facebook.com&access_token="+fbClient.AccessToken);
Run Code Online (Sandbox Code Playgroud)
这绝对是我的应用程序的船舶止动器,所以任何人可以提供的任何帮助或建议将非常感谢!
我需要能够在几分钟内知道运行我的应用程序的设备的时区偏移量.例如,对于太平洋标准时间(我正在测试的地方),我需要得到int -480.例子(我不能从我现在的位置得到 - 但是为了让你知道我需要什么)在阿富汗我会得到270而英国就是我得到0的地方.
到目前为止我的最佳尝试都返回0,这是错误的值:
int timezoneOffsetInMinutes = (DateTime.Now.ToLocalTime() - DateTime.Now).Minutes// returns 0 instead of the expected -480
Run Code Online (Sandbox Code Playgroud)
和
int timezoneOffsetInMinutes = TimeZoneInfo.Utc.BaseUtcOffset.Minutes - TimeZoneInfo.Local.BaseUtcOffset.Minutes;// also returns 0, not -480
Run Code Online (Sandbox Code Playgroud)
我不确定这篇文章是否提出了同样的问题(因为没有给出示例偏移或示例代码),但是给出的一个答案肯定与我正在寻找的无关.
问题:在Windows Phone上获取ScrollViewer的滚动事件
我有一个像这样的scrollviewer:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ScrollViewer x:Name="MyScroller">
<StackPanel>
<!-- ... -->
</StackPanel>
</ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我需要在MyScroller滚动时发生的事件:
// MyScroller.Scroll += // <-- "Scroll" event does not exist on ScrollViewer
MyScroller.MouseWheel += MyScroller_MouseWheel; // Does not fire on scroll
MyScroller.ManipulationDelta += MyScroller_ManipulationDelta; // Fires for pinch-zoom only
Run Code Online (Sandbox Code Playgroud) silverlight ×4
c# ×2
.net ×1
ajax ×1
alexa-skill ×1
aws-lambda ×1
datetime ×1
events ×1
facebook ×1
input ×1
javascript ×1
jquery ×1
keyboard ×1
layout ×1
logout ×1
scroll ×1
scrollviewer ×1
stackpanel ×1
swiftui ×1
timezone ×1
xaml ×1